דילוג לתוכן

Barcode Scanner Emulator

איך סורקי ברקוד עובדים

סריקת ברקוד נראית מיידית, אבל בין הברקוד הפיזי לתו שמגיע לאפליקציה יש ארבעה שלבים נפרדים. הבנת כל שלב מקלה מאוד על אבחון באגים שקשורים לסורק.

ארבעת השלבים של סריקת ברקוד

1. הארה ולכידת תמונה

סורקי לייזר מטאטאים אלומה על פני הברקוד ומודדים את עוצמת האור המוחזר. סורקים מבוססי דימות (רוב הסורקים הידניים המודרניים וסורקי מצלמת טלפון) לוכדים תמונת 2D של הברקוד בחיישן CMOS קטן, בדומה למצלמה ברזולוציה נמוכה.

2. פענוח

הקושחה המובנית מנתחת את רוחב הפסים (או את תמונת ה-2D, עבור קודי QR ו-Data Matrix) ומפענחת אותם למטען הדיגיטלי המקורי, לפי האלגוריתם של הסימבולוגיה — Code 128, Code 39, EAN-13, QR וכן הלאה. כל זה קורה בתוך הסורק, לפני שנתון כלשהו מגיע למחשב.

3. תקשורת

המטען המפוענח נשלח למחשב המארח. התעבורה היא בדרך כלל USB, והרוב המכריע של סורקי צריכה ותעשייה מציגים את עצמם למערכת ההפעלה כהתקן מקלדת USB HID ולא כמחלקת USB מותאמת. חלק מהסורקים תומכים במצבים חלופיים כמו USB טורי (אמולציית יציאת COM) או Bluetooth HID, אבל מצב אמולציית מקלדת הוא ברירת המחדל כמעט בכל סורק שנמכר היום.

4. קלט לאפליקציה

מכיוון שהסורק פועל כמקלדת, מערכת ההפעלה מעבירה את המטען כרצף אירועי מקש לאפליקציה שבמיקוד המקלדת כרגע. האפליקציה אף פעם לא מדברת ישירות עם הסורק — היא רק מקבלת הקשות, בדיוק כאילו מישהו הקליד אותן מהר מאוד.

למה רוב הסורקים מתנהגים כמו מקלדת

מצב מקלדת HID הוא תצורת ברירת המחדל כמעט בכל סורקי הברקוד המסחריים, כי הוא לא דורש התקנת מנהל התקן. כל מערכת הפעלה שתומכת במקלדת USB תומכת בסורק מיד עם החיבור.

אמולציית מקלדת USB פירושה שהקושחה של הסורק ממפה כל תו מפוענח לקוד המקש USB HID שמקלדת הייתה שולחת עבור התו, ואז משדרת דוחות מקלדת HID סטנדרטיים דרך נקודת הקצה של הפסיקה ב-USB.

למה זה חשוב לבדיקות: מכיוון שבשכבת האפליקציה הסורק אינו ניתן להבחנה ממקלדת, אפשר לבדוק חלק גדול מההתנהגות המונעת על ידי הסורק בהקלדה מהירה לשדה שבמיקוד, או בכלי דפדפן שבודק אירועי מקלדת (ראו את הכלים המקושרים למטה).

סיומות ENTER ו-TAB

רוב הסורקים מוגדרים להוסיף הקשת סיומת אחרי המטען המפוענח, לרוב ENTER (חזרת גררה, 0x0D), לפעמים TAB (0x09) או רצף מותאם. זה קיים כדי שהאפליקציה המקבלת תדע היכן הערך שנסרק מסתיים בלי פסק זמן — הסיומת משמשת כאות שליחה, בדומה ללחיצה על Enter אחרי הקלדה בשדה טקסט.

תזמון הסורק

סורק מעביר את כל מטען הברקוד בהרבה פחות משנייה, לעיתים עם פערים של כמה אלפיות השנייה בין תווים. אדם שמקליד את אותה מחרוזת משאיר בדרך כלל 100–300 אלפיות השנייה או יותר בין הקשות. הפרש התזמון הזה הוא הבסיס ללוגיקת זיהוי סורק ביישומי POS ומלאי רבים, שעוקבים אחרי פרצי קלט מהירים במיוחד ומיד אחריהם מקש סיומת.

עבור האפליקציה שלכם המשמעות היא: אם רוצים להבדיל בין קלט סורק להקלדה ידנית, מדדו את הזמן בין ההקשות במקום לחפש דגל מיוחד, כי אירועי מקלדת סטנדרטיים בדפדפן לא נושאים מידע על מקור הקלט.

נסו בעצמכם

השתמשו בבודק קלט ברקוד כדי לסרוק ברקוד אמיתי ולראות בזמן אמת את הערך שנלכד, את התזמון ואת זיהוי הסיומת. להעמקה בהתנהגות טריז המקלדת המשיכו אל טריז מקלדת HID מוסבר.