גדי הרמן, מימוש של מפתח קלט/פלט מבוסס USB

Transcription

גדי הרמן, מימוש של מפתח קלט/פלט מבוסס USB
‫‪20‬‬
‫מימוש של מפתח קלט‪/‬פלט‬
‫מבוסס ‪USB‬‬
‫גדי הרמן‬
‫אורט רוגוזין מגדל העמק‪gherman@walla.co.il ,‬‬
‫המידע מפורסם גם באתר "פרויקטים באלקטרוניקה מבוססי‬
‫‪ "Visual Basic‬בכתובת‪http://galium.co.il/vbe :‬‬
‫תקציר‬
‫מפתח ה‪ USB-‬מחליף בהדרגה את רוב מפתחי המחשב הסטנדרטיים‬
‫המוכרים לנו‪ ,‬כמו למשל מפתח המדפסת ‪ LPT‬והמפתח הטורי‬
‫‪ .COM‬מפתח ה‪ USB-‬מאפשר לחבר למחשב מגוון רחב של התקנים‬
‫החל‪ ,‬כאמור‪ ,‬ממדפסת‪( ,‬מפתח המדפסת שימש‪ ,‬כידוע‪ ,‬כמפתח‬
‫קלט‪/‬פלט תקני לשם חיבור התקנים שונים לצורך הוראת מקצועות‬
‫האלקטרוניקה השונים)‪ ,‬מקלדת‪ ,‬עכבר‪ ,‬סורק‪ ,‬מצלמה ועד ל ֶה ְחסֵן‬
‫נייד (‪ )Disk On Key‬הפועל בקצבים גבוהים של העברת מידע‪.‬‬
‫במסמך זה מופיעים ההסברים והקוד המאפשרים את הפנייה‬
‫למפתח ‪ USB‬שאליו מחוברים התקני קלט‪/‬פלט כמו לחצנים‪,‬‬
‫נורות מנועים ומממירים שונים‪ .‬הפנייה למפתח היא דרך שפה‬
‫עלית‪ ,‬בשפות ‪ C‬ו‪ .Visual Basic-‬שימוש במפתח ה‪ USB-‬בא‬
‫להחליף את מפתח ה‪ LPT-‬בעת תרגול בהפעלת התקנים חיצונים‬
‫של השפות העליות הנזכרות בתכניות הלימודים במגמת "הנדסת‬
‫אלקטרוניקה ומחשבים" ובמגמת "מערכות בקרה ואנרגיה" בתיכון‬
‫ובמכללה‪.‬‬
‫עקרונות‬
‫במהלך פיתוח הקוד הנזכר הובאו בחשבון העקרונות האלה‪:‬‬
‫‪ .1‬הקוד כתוב כך שהוא מתאים לרמת הידע הנדרשת בתכנית‬
‫הלימודים במקצוע "מבוא למחשבים" הנלמד בכיתה י"א‬
‫במגמת "הנדסת אלקטרוניקה ומחשבים"‪.‬‬
‫‪ .2‬תחביר הוראות הקלט והפלט להתקנים החיצונים ומהם‪,‬‬
‫דומה לתחביר של פקודות ‪ IN‬ו‪ OUT-‬תקניות‪.‬‬
‫‪ .3‬התקן ה‪ USB-‬המחובר למחשב מזוהה על ידי מערכת‬
‫ההפעלה כהתקן תקני כך שלא נדרשת התקנה של דרייבר‬
‫(מנהל התקן) ייחודי‪.‬‬
‫‪ .4‬מימוש התקן הקלט פלט מבוסס על מיקרו‪-‬בקר ממשפחת‬
‫המיקרו‪-‬בקרים ‪ C51‬כך שיתאים לביצוע ניסויים בתקשורת‬
‫מחשבים במקצוע "תקשורת מחשבים" הנלמד בכיתה י"ד‪.‬‬
‫‪ .5‬פישוט המורכבות שבמימוש מפתח ‪ USB‬עד רמת פשטות‬
‫הדומה לזו של עבודה מול מפתח ‪ LPT‬או ‪.COM‬‬
‫‪ .6‬לא יידרש ידע במיקרו‪-‬בקרים כדי ליישם ממשק זה‪.‬‬
‫מהו מפתח ‪?USB‬‬
‫ממשק ‪ Universal Serial Bus‬או בקיצור ‪ ,USB‬הוא מפתח טורי‪,‬‬
‫תקני‪ ,‬מהיר ואמין‪ ,‬המאפשר חיבור מגוון רחב של התקנים‪ .‬מפתח‬
‫ה‪ USB-‬מחליף את המפתחים הטוריים (‪ )Serial Ports‬והמקביליים‬
‫(‪ )Parallel Ports‬שהיו מצויים במחשב‪ .‬אחד החסרונות של המפתחים‬
‫האלה היה מספר ההתקנים המוגבל שאפשר לחבר אליהם‪ .‬ממשק‬
‫ה‪ USB-‬מאפשר חיבור של מספר רב של התקנים למחשב‪ ,‬עד‬
‫‪ 128‬התקנים‪ .‬ניהול משאבי המחשב הוא אוטומטי‪ ,‬דבר המאפשר‬
‫למשתמש לחבר התקנים נוספים ללא צורך בהגדרה מקדימה שלהם‬
‫לפני או אחרי חיבורם למחשב‪ .‬הממשק תומך בהעברת נתונים‬
‫בקצבים החל מ‪ ,1.5Mbps-‬במצב עבודה ‪ ,Low speed‬ועד ‪480Mbps‬‬
‫במצב עבודה ‪ .High speed‬ממשק ‪ USB‬מאפשר לנתק חיבור וניתוק‬
‫של התקנים ללא צורך באתחול המחשב‪ .‬חיבור ההתקן נעשה‪,‬‬
‫בדרך כלל‪ ,‬באמצעות כבל ‪ USB‬המורכב מ‪ 4-‬גידים‪ :‬שניים מהם‬
‫משמשים להעברת נתונים ושני האחרים משמשים להספקת מתח‬
‫של ‪ 5V‬בזרם של עד ‪( 500mA‬בכבלי ‪ USB‬בעלי חמישה גידים‪ ,‬הגיד‬
‫החמישי משמש לסיכוך)‪.‬‬
‫הגדרת הדרישות לפיתוח התקן ‪USB‬‬
‫‪ .1‬לשם מימוש התקן חומרה צריכים להשתמש במיקרו‪-‬בקר‬
‫ממשפחת ‪ 8051‬שמותקו בו ‪.USB Engine‬‬
‫‪ .2‬הרכיב מחובר למחשב באמצעות כבל ‪ USB‬ופועל במאפייני‬
‫האותות (מהירות ורמות מתחים) של תקן ‪ .USB‬המיקרו‪-‬‬
‫בקר מסוגל לשלוח ולקבל חבילות מידע מן המחשב ומהתקן‬
‫החומרה‪.‬‬
‫תהליך ההתחברות של התקן ‪USB‬‬
‫עם חיבור התקן ה‪ USB-‬למחשב‪ ,‬מתבצע הליך זיהוי אוטומטי‬
‫מהנעשה במגמות הטכנולוגיות‬
‫הנקרא ‪ Enumeration‬שבו מוחלף מידע בין ההתקן למחשב‪.‬‬
‫המחשב "שואל" את ההתקן סדרה של שאלות‪ ,‬לדוגמה‪ :‬מי‬
‫אתה? מי היצרן שלך? מהו גודל חבילת המידע שאתה משדר‬
‫וקולט? מהי צריכת ההספק שלך? מהו נוהל העברת הנתונים‬
‫שאתה "רוצה" לעבוד בו? וכדומה‪.‬‬
‫התקן ה‪ USB-‬מחובר‪ ,‬באמצעות כבל מתאים‪ ,‬אל מחבר מתאים‬
‫במחשב ומשם לבקר ‪ .USB‬בקר זה מותקן כחלק מן החומרה‬
‫המותקנת בלוח האם במחשב‪ .‬הבקר מופעל באמצעות דרייבר‬
‫(מנהל התקן) ייעודי כחלק ממערכת ההפעלה של המחשב‬
‫(‪ .)Windows‬מערכת ההפעלה‪ ,‬באמצעות בקר ה‪ ,USB-‬אחראית‬
‫‪21‬‬
‫לזיהוי ההתקן המחובר‪ .‬חשוב להדגיש שלמתכנת בשפה עלית‬
‫אין כל שליטה בתהליך הזה‪.‬‬
‫לאחר שמערכת ההפעלה מסיימת לזהות את ההתקן מספקת‬
‫מערכת ההפעלה שירותי קישור ליישום הכתוב בשפה עלית‬
‫(בהנחה שמדובר בהתקן שמערכת ההפעלה מסוגלת לתת לו‬
‫שירותים)‪ .‬לדוגמה התקני )‪,HID (Human interface device‬‬
‫ואם לא כן יש להתקין דרייבר ייעודי (מנהל התקן) להפעלת‬
‫ההתקן המחובר‪.‬‬
‫באיור ‪ 1‬מתואר תרשים המסביר את רכיבי התוכנה והחומרה‬
‫המאפשרים את פעולתו של התקן ‪ USB‬המחובר למחשב‪.‬‬
‫איור ‪ :1‬המרכיבים (חומרה ותכנה) המאפשרים התקשרות בין התקן ‪ USB‬למחשב‬
‫איור ‪ :2‬תרשים מלבנים של הרכיב ‪AT89C5131A-M‬‬
‫‪22‬‬
‫מימוש של מעגל החומרה‬
‫הרכיב המרכזי שבאמצעות נמשש את מעגל החומרה הוא‬
‫של רכיב ממשפחת ‪ 8051‬המיוצר על ידי חברת ‪ Atmel‬בשם‬
‫‪ .AT89C5131A-M‬ברכיב זה מותקנים‪ ,‬בין השאר‪ ,‬המערכות‪:‬‬
‫‪ USB Engine‬התומך בתקן ‪ USB1.1‬ו‪ ,USB2.0-‬זיכרון תוכנה‬
‫של‪ 32KbyteFlash EEPROM‬הניתן לצריבה באמצעות מפתח ה‪-‬‬
‫‪ USB‬ו‪ 34-‬הדקי קלט‪/‬פלט (‪.)I/O Pins‬‬
‫באיור ‪ 2‬אפשר לראות את תרשים המלבנים של הרכיב‬
‫‪ AT89C5131‬שמורכב ממיקרו‪-‬בקר בסיסי ממשפחת ‪,C51‬‬
‫מוקף במלבן שחור‪ ,‬ומימינו מותקנות מערכות נוספות המצויות‬
‫במיקרו‪-‬בקר‪.‬‬
‫באיור ‪ 3‬אפשר לראות את מיפוי ההדקים של הרכיב‪.‬‬
‫באיור ‪ 5‬יש סרטוט מפורט של מעגל החומרה הנדרש לשם מימוש‬
‫ממשק ‪ USB‬כהתקן קלט‪/‬פלט‪.‬‬
‫איור ‪ :5‬סרטוט חשמלי מפורט של מעגל החומרה למימוש‬
‫ממשק ‪USB‬‬
‫איור ‪ :3‬מיפוי ההדקים של הרכיב ‪ AT89C5131A-M‬בתושבת‬
‫‪PLCC52‬‬
‫באיור ‪ 4‬מתוארים מספרי ההדקים של התושבת‪.‬‬
‫איור ‪ :4‬מספרי ההדקים של תושבת ‪PLCC52‬‬
‫מלבד רכיב ‪ AT89C5131A-M‬מותקנים במעגל גביש לתדר של‬
‫‪ 24MHz‬המחובר להדקים ‪ 12‬ו‪ 13-‬של המיקרו‪-‬בקר‪ ,‬מתג ‪ISP‬‬
‫המחובר להדק ‪( PSEN‬הדק ‪ 28‬במיקרו‪-‬בקר)‪ .‬המתג הזה מאפשר‬
‫מעבר בין שני מצבי עבודה‪ :‬האחד שבו ממשק ה‪ USB-‬משמש‬
‫להטענת תוכניות לזיכרון ה‪ ,Flash-‬והאחר מצב "ריצה"‪ ,‬רגיל‪,‬‬
‫שבו המיקרו‪-‬בקר מריץ את התוכנה הצרובה ב‪ .Flash-‬הסבר‬
‫נוסף על אופן הטענת תכנית לזיכרון המיקרו‪-‬בקר מצוי בהמשך‬
‫בסעיף "כתיבת התוכנה למיקרו‪-‬בקר"‪.‬‬
‫כמו כן מופיע באיור ‪ 5‬מעגל ‪ Reset‬המחובר להדק ‪ 43‬של המיקרו‪-‬‬
‫בקר‪ .‬באיור ‪ 5‬מופיע גם מחבר ‪ USB‬מדגם ‪ USB Type-B‬המחובר‬
‫להדקים ‪ 22‬עד ‪ 24‬בבקר ה‪.USB-‬‬
‫באיור ‪ 6‬אפשר לראות את מיפוי ההדקים של מחבר ‪USB‬‬
‫מדגם ‪.B‬‬
‫אפשר לבנות את מעגל החומרה על לוח חיבורים סטנדרטי‪ ,‬במצב‬
‫זה יש להקפיד על החיבור בין מחבר ה‪ USB-‬לבין המיקרו‪-‬בקר‪.‬‬
‫חלק זה של המעגל פועל בתדרים גבוהים מאוד ועל כן יש להקפיד‬
‫שאורך המוליך המחבר בין השניים יהיה קצר ביותר ויש להקפיד‬
‫על צורתו של המוליך‪.‬‬
‫יש כרטיסים מסחריים שבהם מותקן הרכיב הנדון‪ ,‬הכוללים‬
‫את מעגל החומרה הנדרש‪ ,‬ומיוצרים על ידי יצרנים שונים‬
‫בארץ ובחו"ל‪ .‬באיור ‪ 7‬אפשר לראות דוגמה למעגל מודפס‬
‫שכזה שאפשר לרכוש אותו באתר של יצרן המיקרו‪-‬בקר‪,‬‬
‫ובאיור ‪ 8‬יש דוגמה למעגל מודפס המיוצר על ידי יצרן‬
‫בארץ‪.‬‬
‫מהנעשה במגמות הטכנולוגיות‬
‫‪23‬‬
‫איור ‪ :6‬מיפוי הרגלים של מחבר ‪ USB‬מדגם ‪B‬‬
‫איור ‪ :7‬דוגמה למעגל מודפס‬
‫איור ‪ :8‬דוגמה למעגל מודפס המיוצר על ידי יצרן בארץ‪.‬‬
‫כתיבת התוכנה למיקרו‪-‬בקר‬
‫קובץ זה הקרוי בשם ‪ AT89c5131_USB_Program.hex‬מצורף‬
‫למסמך זה ומצוי בתיקייה ‪ .AT89c5131_USB_Program‬כמו‬
‫כן אפשר להוריד את הקובץ מן האינטרנט בכתובת‪http:// :‬‬
‫‪galium.co.il/vbe/download/download_package.rar‬‬
‫כמתואר באיור ‪ 1‬העוסק במרכיבים הדרושים לשם יצירת‬
‫תקשורת בין התקן ‪ USB‬למחשב‪ ,‬נדרשת תכנית ייעודית שבה‬
‫יופיעו כל ההגדרות הנדרשות‪ ,‬נוהלי התקשורת‪ ,‬התשובות‬
‫למערכת ההפעלה (כשזו תבצע את הליך ה‪)Enumeration-‬‬
‫והחשוב ביותר‪ :‬קליטת נתונים שהמחשב משדר ושליחת נתונים‬
‫אלו למפתחי הפלט (‪ ,)Ports‬קליטת הנתונים המתקבלים‬
‫במפתחי הקלט והעברתם למחשב‪.‬‬
‫באיור ‪ 9‬מצוי קטע מקוד של תכנית לשידור וקליטה של‬
‫נתונים מן המחשב למיקרו‪-‬בקר וחזרה‪ .‬בשלב ראשון בודקת‬
‫התכנית באמצעות שימוש בפונקציה ‪ Is_new_data_read‬אם‬
‫המחשב משדר נתונים למיקרו‪-‬בקר‪ .‬כשהמחשב משדר נתונים‬
‫קורא המיקרו‪-‬בקר את הנתונים וכותב אותם לתוך המערך‬
‫‪ data_received‬ובהמשך שולח אותם‪ ,‬לפי הסדר‪ ,‬למפתחים‬
‫‪ .P0 - P3‬בשלב השני שולח המיקרו‪-‬בקר למחשב את הנתונים‬
‫שקלט מפתחים מהמפתחים ‪ ,P0 - P3‬באמצעות שימוש במערך‬
‫‪. data_to_send‬‬
‫קוד התכנית עבר הידור באמצעות מהדר הממיר את הקוד‬
‫הכתוב בשפת ‪( C‬למיקרו‪-‬בקרים ממשפחת ‪ )C51‬לקובץ‬
‫מספרים הקסה דצימליים‪ ,Hex File ,‬הניתן לצריבה בזיכרון‬
‫ה‪ Flash-‬של הבקר‪.‬‬
‫צריבת התוכנה בזיכרון הבקר‬
‫נשתמש בתוכנה ייעודית ששמה (‪Flexible In-system‬‬
‫‪ Programmer) Flip‬שמספק לנו יצרן הרכיב לשם צריבת‬
‫הקובץ ‪ AT89c5131_USB_Program.hex‬בזיכרון ה‪ Flash-‬של‬
‫המיקרו‪-‬בקר‪.‬‬
‫את התוכנה הזאת אפשר להוריד מאתר היצרן בכתובת‪:‬‬
‫‪http :// www . atmel . com / dyn / products / tools _ card .‬‬
‫‪.asp?tool_id=3886‬‬
‫באיור ‪ 10‬אפשר לראות את המסך העבודה של התוכנה לאחר‬
‫התקנתה במחשב‪.‬‬
‫לשם צריבת התכנית ‪ AT89c5131_USB_Program.hex‬בבקר‬
‫יש לבצע את השלבים האלה‪:‬‬
‫‪ .1‬ניתוק כבל ה‪ USB-‬המחבר בין הבקר למחשב‪.‬‬
‫‪ .2‬חיבור מתח הפעלה למיקרו‪-‬בקר‪.‬‬
‫‪ .3‬העברת מתג ‪ ISP‬המחובר להדק ‪ PSEN‬של המיקרו‪-‬בקר (איור‬
‫‪ ,)5‬למצב צריבת התכנית בבקר ולחיצה על לחצן ‪.RESET‬‬
‫‪24‬‬
‫איור ‪ :9‬קטע מקוד התכנית לשידור וקליטה של איור ‪ :11‬מנהל ההתקנים מזהה את הבקר כהתקן ‪HID‬‬
‫נתונים מהמחשב למיקרו‪-‬בקר וחזרה‬
‫‪ .4‬חיבור כבל ‪ USB‬בין הבקר למחשב‪.‬‬
‫‪ .5‬אם זו הפעם הראשונה שבה מחובר מיקרו‪-‬בקר מדגם‬
‫‪ AT89c5131‬למחשב – יודיע המחשב שהוא מזהה חומרה‬
‫חדשה‪ .‬יש להתקין את הדרייבר הדרוש הממוקם בתיקייה‪:‬‬
‫‪ C:\Program Files\Atmel\Flip 3.3.2\usb‬תוך שימוש באשף‬
‫ההתקנה שהמחשב פותח ברגע שהוא מזהה חומרה חדשה‪.‬‬
‫אם אין זו הפעם הראשונה שבה מחובר מיקרו‪-‬בקר מדגם‬
‫זה למחשב‪ ,‬אפשר לדלג על השלב הזה‪.‬‬
‫‪ .6‬הפעלת תוכנת ה‪ FLIP-‬ובחירה בתפריט ‪ Select‬לאחר הקשה‬
‫על ‪ Device‬ברכיב ‪.AT89C5131‬‬
‫‪ .7‬פתיחת התקשורת בין המיקרו‪-‬בקר למחשב על ידי לחיצה‬
‫על ‪ Open‬בחלון שייפתח לאחר לחיצה על ‪SettingsàComm‬‬
‫‪.unicationàUSB‬‬
‫‪ .8‬יש לוודא כי תיבת הסימון ‪ BLBJ‬אינה מסומנת‪.‬‬
‫‪ .9‬בחירת הקובץ ‪ AT89c5131_USB_Program.hex‬המיועד‬
‫לצריבה בבקר על ידי לחיצה על ‪...FileàLoad HEX file‬‬
‫‪ .10‬ולבסוף לחיצה על ‪ Run‬לביצוע הצריבה‪.‬‬
‫‪ .11‬לאחר מכן יש לנתק את כבל ה‪ USB-‬המחבר בין הבקר‬
‫למחשב‪.‬‬
‫‪ .12‬העברת המתג ‪ ,ISP‬המחובר להדק ‪ PSEN‬של המיקרו‪-‬בקר‪,‬‬
‫למצב ריצה רגיל ולחיצה על לחצן ‪.RESET‬‬
‫‪ .13‬חיבור חוזר של כבל ה‪ USB-‬המחבר בין הבקר למחשב‪.‬‬
‫חשוב לציין שההליך הזה הוא חד פעמי‪ .‬לאחר צריבה ראשונה‬
‫של הבקר כהתקן קלט‪/‬פלט ‪ HID‬ישמש הרכיב למטרה זו עד‬
‫שנצרוב עליו משהו אחר‪.‬‬
‫הליך הזיהוי של ההתקן במערכת ההפעלה‬
‫איור ‪ :10‬מסך העבודה של התוכנה ‪ Flip‬המשמשת לצריבת‬
‫תכניות בבקר‬
‫לאחר ביצוע הליך הצריבה‪ ,‬ייעשו העברת המיקרו למצב‬
‫ריצה‪ ,‬ביצוע ‪ Reset‬וחיבור כבל ה‪ USB-‬המחבר בין הבקר‬
‫למחשב‪ .‬המחשב יזהה חומרה חדשה‪ ,‬אך הפעם הוא לא‬
‫ידרוש התקנה של דרייבר מתאים‪ .‬זאת מאחר שתכנתנו את‬
‫הבקר כך שיזוהה על ידי מערכת ההפעלה כהתקן סטנדרטי‬
‫מסוג ‪.HID‬‬
‫מהנעשה במגמות הטכנולוגיות‬
‫‪25‬‬
‫באיור ‪ 11‬אפשר לראות את חלון "מנהל ההתקנים" (‪Device‬‬
‫‪ )Manager‬של מערכת ההפעלה שבו מוצג ‪Properties USB‬‬
‫‪ – Human Interface Device‬מאפיינים של התקן חדש‪ .‬ההתקן‬
‫הזה הוא מסוג "‪."AT89C5131 – USB HID Generic‬‬
‫כתיבת קוד בשפת‬
‫קלט‪/‬פלט למפתח‬
‫‪C‬‬
‫למימוש‬
‫מעיון באיור ‪ 12‬עולה שכדי לכתוב תכנית בשפה עלית להפעלת‬
‫התקן חומרה דרך ממשק ‪ ,USB‬יש לבצע פנייה‪ ,‬באמצעות קוד‬
‫מתאים‪ ,‬למערכת ההפעלה שתפנה להתקן החומרה דרך ממשק‬
‫ה‪ .USB-‬כדי להקל על התקשורת בין היישום בשפת ‪ C‬לבין‬
‫מערכת ההפעלה‪ ,‬נשתמש בקובץ הספרייה (‪dll file) AtUsbHid.‬‬
‫‪ .dll‬קובץ זה מסופק על ידי יצרן הרכיב לשם מטרה זו‪.‬‬
‫בשלב הבא בכתיבת הקוד ניצור קובץ כותרת בשם ‪AtUsbHid.‬‬
‫‪ ,h‬קובץ זה משמש כמתאם בין הקוד הנכתב לשם ביצוע פעולות‬
‫מול מפתח ה‪ USB-‬לבין הפעלתו בפועל על ידי קוד תוכנה הכתוב‬
‫בקובץ הספרייה ‪ .AtUsbHid.dll‬בדרך זו אפשר להציג לתלמיד‬
‫קוד קצר ופשוט הדומה במבנה שלו לקובץ המוכר לו מן העבודה‬
‫מול התקני קלט‪/‬פלט מבוססי ‪.LPT‬‬
‫קובץ הכותרת ‪ AtUsbHid.h‬מורכב מ‪:‬‬
‫‪ .1‬קוד יצרן ‪ VID‬וקוד המוצר ‪ PID‬המאפשר לנו לזהות את‬
‫התקן החומרה הנתון מבין כלל התקני ה‪ USB-‬המחוברים‬
‫למחשב‪.‬‬
‫‪ .2‬שני מערכים בני ‪ 32‬בתים מטיפוס בית (‪)unsigned char‬‬
‫המכונים ‪ In_Buufer‬ו‪ .Out_Buufer-‬מערכים אלו משמשים‬
‫איור ‪ :12‬האופן שבו משתלב קובץ הספרייה ‪AtUsbHid.dll‬‬
‫ביישום קוד בשפה עלית‬
‫איור ‪ :14‬האופן שבו משתלב קובץ הספרייה ‪ MCHID.dll‬ביישום‬
‫קוד בשפה עלית‬
‫איור ‪ :13‬דוגמה לקוד תכנית בשפת ‪ C‬הפונה להתקן ‪USB‬‬
‫המשמש כמפתח קלט‪/‬פלט‬
‫‪26‬‬
‫‪.3‬‬
‫‪.4‬‬
‫‪.5‬‬
‫‪.6‬‬
‫‪.7‬‬
‫לקליטה ולשידור של הנתונים (חבילות המידע) בין המחשב‬
‫להתקן‪.‬‬
‫הכרזה על מספר רב של פונקציות המצויות בקובץ הספרייה‬
‫‪.AtUsbHid.dll‬‬
‫פונקציה ששמה ‪ initializationUSB‬המאתחלת את התקשורת‬
‫מול ההתקן‪.‬‬
‫פונקציה ששמה ‪ closeUSB‬הסוגרת את התקשורת מול‬
‫ההתקן‪.‬‬
‫פונקציה ששמה ‪ ,outUSB‬הזהה במבנה שלה לפונקציה ‪.Outp‬‬
‫הפונקציה מקבלת שני נתונים‪ ,‬הראשון הוא מספר המפתח‬
‫בבקר שאליו כותבים‪ ,‬והשני הנתון ששולחים למפתח‪.‬‬
‫פונקציה ששמה ‪ ,inUSB‬הזהה במבנה שלה לפונקציה ‪,Inp‬‬
‫הפונקציה מקבלת נתון אחד המייצג את מספר המפתח בבקר‬
‫ממנו קוראים‪ .‬הפונקציה מחזירה נתון‪ ,‬בגודל בית‪ ,‬שהוא‬
‫הנתון שנקלט במפתח‪.‬‬
‫דוגמת הקוד שמופיעה באיור ‪ 13‬כתובה בשפת ‪ ,C‬זהו קוד תקני‬
‫המתאים למהדר ‪.Microsoft Visual C++ 2008 Express Edition‬‬
‫דוגמת הקוד מראה פנייה למפתח ‪ P1‬ו‪ P2-‬של הבקר כדי לגרום‬
‫ל‪ 10-‬הבהובים בכל אחד מן המפתחים וקריאה של נתונים‬
‫מהמפתחים ‪ P0‬ו‪ P3-‬כדי להציגם‪ 10 ,‬פעמים‪ ,‬על צג המחשב‪.‬‬
‫את סביבת העבודה ‪Microsoft Visual C++ 2008 Express‬‬
‫‪ Edition‬אפשר להוריד חינם מן האתר‪:‬‬
‫‪http://www.microsoft.com/express‬‬
‫אפשר להוריד את קובץ הדוגמה מן האינטרנט בכתובת‪:‬‬
‫‪http://galium.co.il/vbe/download/download_package.rar‬‬
‫השלב האחרון בכתיבת התכנית הוא הקוד שמוצג באיור ‪.13‬‬
‫איור ‪ :15‬דוגמה לקוד תכנית בשפת ‪ C‬הפונה להתקן ‪ USB‬המשמש כמפתח קלט‪/‬פלט‬
‫מהנעשה במגמות הטכנולוגיות‬
‫‪27‬‬
‫‪ .5‬פונקציה שמה ‪ ,outUSB‬הזהה במבנה שלה לפונקציה ‪.Outp‬‬
‫הפונקציה מקבלת שני נתונים‪ ,‬הראשון הוא מספר המפתח‬
‫בבקר שאליו כותבים‪ ,‬והשני הנתון ששולחים למפתח‪.‬‬
‫איור ‪ :16‬עיצוב טופס הממשק של תוכנה המממשת ממשק‬
‫קלט‪/‬פלט מבוסס ‪USB‬‬
‫‪Visual Basic‬‬
‫כתיבת הקוד בשפת‬
‫למימוש קלט‪/‬פלט למפתח‬
‫מעיון באיור ‪ 14‬עולה שכדי לכתוב תכנית בשפה עלית להפעלת‬
‫להתקן חומרה דרך ממשק ‪ ,USB‬יש לבצע פנייה‪ ,‬באמצעות‬
‫קוד מתאים‪ ,‬למערכת ההפעלה‪ ,‬שתפנה להתקן החומרה דרך‬
‫ממשק ה‪ .USB-‬כדי להקל על התקשורת בין היישום בשפת‬
‫‪ Visual Basic‬לבין מערכת ההפעלה‪ ,‬נשתמש בקובץ הספרייה‬
‫(‪ dll file) MCHID.dll‬קובץ זה נכתב על ידי חברת ‪microchip‬‬
‫לשם למטרה זו‪.‬‬
‫בשלב הבא בכתיבת הקוד ניצור קובץ כותרת בשם‬
‫‪ mcHIDInterface.vb‬המשמש כמתאם בין הקוד הנכתב לשם‬
‫ביצוע פעולות מול מפתח ה‪ USB-‬לבין הפעלתו בפועל על ידי‬
‫קוד תוכנה הכתוב בקובץ הספרייה ‪ .MCHID.dll‬בדרך זו אפשר‬
‫להציג לתלמיד קוד קצר ופשוט הדומה במבנה שלו לקובץ‬
‫המוכר לו מן העבודה מול התקני קלט‪/‬פלט מבוססי ‪.LPT‬‬
‫קובץ הכותרת ‪ mcHIDInterface.vb‬מורכב מ‪:‬‬
‫‪ .6‬פונקציה ששמה ‪ ,inUSB‬הזהה במבנה שלה לפונקציה ‪,Inp‬‬
‫הפונקציה מקבלת נתון אחד המייצג את מספר המפתח‬
‫בבקר שממנו קוראים‪ .‬הפונקציה מחזירה נתון‪ ,‬בגודל בית‪,‬‬
‫שהוא הנתון שנקלט במפתח‪.‬‬
‫השלב האחרון בכתיבת התכנית הוא הקוד שמוצג באיור ‪.15‬‬
‫דוגמת הקוד מראה כיצד פונים למפתח ‪ P1‬ו‪ P2-‬של הבקר וכן‬
‫כיצד קוראים נתונים מן המפתח ‪ P0‬ו‪ P3-‬כדי להציג את המידע‬
‫על צג המחשב‪.‬‬
‫מצורף להסבר זה דוגמת קוד שנכתב בשפת ‪Visual Basic‬‬
‫המתאים למהדר החדש של חברת מיקרוסופט ‪Microsoft Visual‬‬
‫‪.Basic 2008 Express Edition‬‬
‫את סביבת העבודה ‪Microsoft Visual Basic 2008 Express‬‬
‫‪ Edition‬אפשר להוריד חינם מן האתר‪http://www.microsoft. :‬‬
‫‪com/express‬‬
‫אפשר להוריד את קובץ הדוגמה מן האינטרנט בכתובת‪:‬‬
‫‪http://galium.co.il/vbe/download/download_package.rar‬‬
‫סיכום‬
‫לסיכומו של מסמך זה והנלווים אליו ובנימה קצת אישית‪.‬‬
‫פיתוח המצורף היה לי אתגר לא קטן‪ .‬התמודדתי עם נושא‬
‫שלא הכרתי קודם לכן‪ ,‬למדתי אותו לעומק‪ ,‬הבנתי את‬
‫המורכבות של פיתוח תוכנה המאפשרת פנייה משפה עילית‬
‫למפתח ‪ USB‬ויצרתי תוכנה המאפשרת לתלמיד פנייה פשוטה‬
‫למפתח ‪ USB‬כתחליף לפנייה למפתח ‪ LPT‬שעתיד להיעלם‬
‫בשנים הקרובות‪.‬‬
‫שאלות והערות אשמח לקבל בדוא"ל ‪gherman@walla.co.il‬‬
‫‪ .1‬קוד היצרן ‪ VID‬וקוד המוצר ‪ PID‬המאפשר לנו לזהות את‬
‫התקן החומרה שלנו מבין כלל התקני ה‪ USB-‬המחוברים‬
‫למחשב‪.‬‬
‫‪ .2‬שני מערכים בגודל ‪ 32‬בתים מטיפוס בית (‪ )Byte‬הקרויים‬
‫בשמות ‪ BufferIn‬ו‪ .BufferOut-‬מערכים אלו משמשים‬
‫לקליטה ושידור של הנתונים (חבילות המידע) בין המחשב‬
‫להתקן‪.‬‬
‫רשימת מקורות‬
‫ בן‪-‬דוד‪ ,‬ג' (‪ . )2005‬תכן התקני ‪ ,USB2.0‬הוצאת המחבר‪.‬‬
‫‪Himpe, V. (2006). Visual Basic for Electronics Engineering‬‬
‫‪ .3‬הכרזה על מספר רב של פונקציות המצויות בקובץ הספרייה‬
‫‪.MCHID.dll‬‬
‫‪Applications. Elektor.‬‬
‫‪ .4‬פונקציה ששמה ‪ initializationUSB‬המאתחלת את התקשורת‬
‫מול ההתקן‪.‬‬
‫‪Axelson, J. (2006). USB Complete: The Developer’s‬‬
‫‪Hyde, J. (1999). USB Design by Example. Intel.‬‬
‫‪Guide. Lakeview Research.‬‬
‫‬
‫‬
‫‬