根据GS1标准(http://www.databar-barcode.info/application-identifiers/),条形码中的可变长度字段应该有一个中断符号,以便在结束时发出信号。
我的测试中的.zpl打印机代码如下:
^ BY200,200 ^ FT250,860 ^ BXN,12,200,0,0,6,〜 ^ FH \ ^ FD \ 7E10012345678912345678910123 \ 7E1151606013712 \ 7E1 ^ FS
这是根据(http://www.servopack.de/support/zebra/ZPLbasics.pdf)编写的,当我将其扫描到Notepad ++中时,我发现在代码中应用了中断,如下图所示。
但是当我尝试在我的VB6应用程序中扫描它时,它似乎没有抓住中断符号并将所有内容从10(批号)和前进写入batchnumber而不是在15(到期日期)之前中断。
我的代码如下所示:
ElseIf Left(Data, 2) = AI_BATCH Or Left(Data, 6) = "<GS>10" Or Left(Data, 3) = "~10" Then
If Left(Data, 2) = AI_BATCH Then
Data = Mid(Data, 3)
ElseIf Left(Data, 6) = "<GS>10" Then
Data = Mid(Data, 7)
ElseIf Left(Data, 3) = "~10" Then
Data = Mid(Data, 4)
End If
' Calculate length
While Mid(Data, AI_BATCH_LEN + 1, 1) <> "" And Mid(Data, AI_BATCH_LEN + 1, 1) <> "~" And Mid(Data, AI_BATCH_LEN + 1, 1) <> "<"
AI_BATCH_LEN = AI_BATCH_LEN + 1
Wend
gs1.batch = Trim(Left(Data, AI_BATCH_LEN))
Data = Mid(Data, 1 + AI_BATCH_LEN)
提前致谢。
答案 0 :(得分:3)
您似乎在寻找2个ASCII字符'G'
和'S'
,但您应该寻找单 'GS'
字符 - {{1}是ASCII控制字符29(组分隔符)。
此字符不能作为字母打印,因此Notepad ++(及其使用的字体)会替换您看到的图形字形。
使用GS
找到此字符:
chrw$(29)