מאמר זה מדגים איך ליצור קודי ברקוד (Interleaved 2-of-5) I25 ,תוך שימוש ב-VBScript בצד השרת ללא שימוש במסד נתונים.
קודם כל אני מניח שאין לכם מושג על ברקודי I25 ואיך הוא מקודד. אז אין דאגה, אני אנסה להסביר פה הכל.
ברקוד Interleaved 2-of-5 הוא ברקוד שמקדד מספרים בלבד. יש לנו עשר תבניות כל אחת מיצגת ספרה אחת בלבד (0-9) בסכמת המספרים העשרונית שלנו.
הטבלה הבאה מדגימה את התבניות:
הגדרת ה-I25 אומרת שכל סימן חייב להתאחד עם אחר. כך שזוג ספרות יכול להיות מיוצג על ידי רק יחידה אחת בלבד של I25.
כפי שמוצג בטבלה שלמטה, הספרה הראשונה מקודדת ב"בארים" (הקוים שבברקוד) והספרה השניה מיוצגת בתור רווחים. שימו לב שהשם 2-מ-5 נובע מהעובדה שביחידת I25 יש חמש "בארים" (הקוים שבברקוד) שתיים מתוכם רחבים, חמש רווחים ושתיים מתוכם רווחים.
הברקוד שבטבלה אינו שלם כך שאינו יכול להיקרא.
ברקוד I25 שלם חייב שיהיה בו איזור "שקט" בהתחלה (בדרך כלל באורך של לפחות רבע אינץ ברוחב), סימן התחלתי, המספר שברצונך לקדד, סימן עצירה ושוב איזור שקט.
יש גם לשים לב שמכיון שהספרות מוחלפות, חובה שיהיה מספר שווה של ספרות בברקוד. ברקוד של "11" הוא קוד "חוקי" של I25 אך "111" אינו.
איך לקדד מספר לתבנית I25.
עם ידע זה כעת אוכל להדריך אותכם ביצירת פונקציה של VBScript שתיצור ברקודים אלו.
קודם כל ניצור פונקציה שתקרא I25Encode().
פונקציה זו תקבל ארגומנט כמחרוזת שהיא הספרות שברצוננו לקודד ולהחליף.
בכדי לבצע זאת ניצור מערך של עשרה אלמנטים. כל אלמנט יכיל את התבנית לסיפרה מסוימת.
Function I25Encode(StringNumber)
Dim asPattern(), sSTART, sSTOP
Redim asPattern(10)
start and stop patterns can be found in fig. 3
sSTART = "NNNN"
sSTOP = "WNN"
these patterns can be found in fig. 1
asPattern(0) = "NNWWN"
asPattern(1) = "WNNNW"
asPattern(2) = "NWNNW"
asPattern(3) = "WWNNN"
asPattern(4) = "NNWNW"
asPattern(5) = "WNWNN"
asPattern(6) = "NWWNN"
asPattern(7) = "NNNWW"
asPattern(8) = "WNNWN"
asPattern(9) = "NWNWN"
כעת נבצע כמה ואלידאציות לארגומנטים המתקבלים.
שימו לב שמספר הספרות בארגומנט חייב להיות שווה; כל הספרות בארגומנט חייבות להיות בין 0 ל-9 (בין 48 ל-57 לפי טבלת ASCII) כך ש:
If (Len(StringNumber) Mod 2) <> 0 Then
the number of characters in the
argument must be odd
I25Encode = ""
Exit Function
End If
If Not IsNumeric(StringNumber) Then
argument must be numeric
I25Encode = ""
Exit Function
Else
If (InStr(StringNumber, ".") <> 0) Or _
(InStr(StringNumber, ",") <> 0) Then
argument is numeric but contains invalid
characters to us
I25Encode = ""
Exit Function
End If
End If
כעת לאחר שביצענו את האישרור (הרוטינה היא יותר אפקטיבית אם חלק האישרור ימוקם בין הצהרות ה-Dim וה-Redim עשה זאת אם רצונך בכך.) כעת עלינו לקרוא את התווים בארגומנט שהתקבל לקידוד ולהחליפו בקוד הבא:
Dim sEncodedSTR, sUnit
Dim iCharRead, sDigit1, sDigit2, i
sEncodedSTR = ""
For iCharRead = 1 To Len(StringNumber) Step 2
sDigit1 = asPattern( Asc( _
Mid( StringNumber, iCharRead, 1 ) ) - 48 )
sDigit2 = asPattern( Asc( Mid( _
StringNumber, iCharRead + 1, 1 ) ) - 48 )
sUnit = ""
For i = 1 To 5
sUnit = sUnit & Mid( sDigit1, i, 1 ) & _
Mid( sDigit2, i, 1 )
Next
sEncodedSTR = sEncodedSTR & sUnit
Next
כל הכבוד! כעת יש בידינו את התוצאות המקודדות והמוחלפות. כעת יש רק להוסיף את תבניות ההתחלה והעצירה ולהחזיר אותם
I25Encode = sSTART & sEncodedSTR & sSTOP
End Function
עד עכשיו ראינו איך יוצרים פונקצית I25Encode(). כעת עלינו לכתוב את קוד הASP אשר ידע להציג את הנתונים המספרים בצורת ברקוד.
יצירת גרפיקה מתאימה.
כעת עלינו ליצור גרפיקה מתאימה (GIF), אחד ל"בר" הצר (שחור, 2 פיקסלים ברוחב), לרווח הצר (לבן, 2 פיקסלים ברוחב), אחד ל"בר" הרחב (שחור 4 פיקסלים ברוחב) ואחד לרווח הרחב (לבן, 4 פיקסלים ברוחב), כל גרפיקות אילו צריכות להיות יותר גבוהות מ-39 פיקסלים.
| שם הקובץ |
תאור |
תמונה |
| nb.gif |
באר צר |
 |
| ns.gif |
רווח צר |
 |
| wb.gif |
באר רחב |
 |
| ws.gif |
רווח רחב |
 |
גרפיקות אילו ישמשו ליצירת דף ה-HTML שבו ניצור את הברקוד מהתמונות.
כתיבת הקוד הסופי.
כעת נכתוב את הקוד הסופי. קוד זה יכיל את המחרוזת המוחזרת מפונקצית I25Encode() ותיצור את דף ה-HTML עם הברקוד תוך שימוש בתמונות שיצרנו. (כמובן יש לצרף את פונקצית I25Encode() לקוד שלמטה או על ידי גזירה והדבקה לתוך הקובץ או על ידי שימוש ב-SSI)
Interleaved 2-of-5 Example
<%
Ensure that the I25Encode function is in this file...
(For this example it has been removed for brevity
%>
Enter the number to be encoded as Interleaved 2-of-5 Specification.
<%
If Request("hidFORM") = "fromFORM" Then
sMyI25 = I25Encode(Request("txtNUM"))
If (sMyI25 = "") Then
Response.Write """" & Request("txtNUM") & _
""" is invalid. Try another number."
Else
Dim iPos, sGIF, bBAR
bBAR = True
For iPos = 1 To Len(sMyI25)
If (bBar) Then
Bar
sGIF = Mid(sMyI25, iPos, 1) & "b.gif"
Else
Space
sGIF = Mid(sMyI25, iPos, 1) & "s.gif"
End If
Response.Write " "
bBar = Not bBar
Next
End if
End If
%>
| קבצים מצורפים |
| bars.zip | קובץ מכווץ של כל תמונות הבארים בהם יש להשתמש ליצירת ברקוד |
| I25Encode_asp.txt | הקוד המלא של הפונקציה I25Encode() |
|