如何在VB6中读取.zpl datamatrix中的可变长度应用程序标识符?

如何在VB6中读取.zpl datamatrix中的可变长度应用程序标识符?,vb6,Vb6,根据GS1标准(),条形码中的可变长度字段应具有中断符号,以在结束时发出信号 在我的测试中.zpl打印机的代码如下: ^到200200^FT250860^BXN,12200,0,0,6~ ^FH\^FD\7E10012345678912345678910123\7E1151606013712\7E1^FS 这是根据()编写的,当我将其扫描到Notepad++中时,我看到代码中应用了中断,如下图所示 但是,当我尝试在VB6应用程序中扫描它时,它似乎没有捕捉到中断符号,并将从10(批次号)开始的所

根据GS1标准(),条形码中的可变长度字段应具有中断符号,以在结束时发出信号

在我的测试中.zpl打印机的代码如下:

^到200200^FT250860^BXN,12200,0,0,6~ ^FH\^FD\7E10012345678912345678910123\7E1151606013712\7E1^FS

这是根据()编写的,当我将其扫描到Notepad++中时,我看到代码中应用了中断,如下图所示

但是,当我尝试在VB6应用程序中扫描它时,它似乎没有捕捉到中断符号,并将从10(批次号)开始的所有内容写入批次号,而不是在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)
ElseIf Left(数据,2)=AI_批次或Left(数据,6)=“10”或Left(数据,3)=“10”
如果左(数据,2)=AI_批次,则
数据=Mid(数据,3)
如果左侧(数据,6)=“10”,则
数据=Mid(数据,7)
ElseIf Left(数据,3)=“~10”然后
数据=Mid(数据,4)
如果结束
“计算长度

而Mid(Data,AI_BATCH_LEN+1,1)“,”和Mid(Data,AI_BATCH_LEN+1,1)“~”和Mid(Data,AI_BATCH_LEN+1,1)您似乎在寻找两个ASCII字符
'G'
'S'
,但您应该寻找单个
'GS'
字符-
GS
是ASCII控制字符29(组分隔符)

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

使用
chrw$(29)
查找此字符:

x = "Hello" & chrw$(29) & "World"
?x
HelloWorld

?left$(x, instr(x, chrw$(29)) - 1)
Hello