如何在VB6中的.zpl数据矩阵中读取变长应用程序标识符?

时间:2016-03-24 08:08:08

标签: vb6

根据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 ++中时,我发现在代码中应用了中断,如下图所示。

Scanned datamatrix in 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)

提前致谢。

1 个答案:

答案 0 :(得分:3)

您似乎在寻找2个ASCII字符'G''S',但您应该寻找 'GS'字符 - {{1}是ASCII控制字符29(组分隔符)。

此字符不能作为字母打印,因此Notepad ++(及其使用的字体)会替换您看到的图形字形。

使用GS找到此字符:

chrw$(29)