我正在尝试读取Zebra RZ400(运行最新固件V53.17.22Z)打印头下的当前(第1类第2代)RFID标签的TID库。我通过USB连接。
我正在使用Zebra设置实用程序工具中的"直接通信"程序。
这是我的程序,注释:
^XA Start program
^RS8 Set RFID mode to Class 1 Gen 2
^RFR,H,0,8,2 Read the first 8 bytes of the TID bank as a Hexadecimal string
^FN1 Store the data into Memory Field #1
^FS End Field
^HV1,,Foo Transfer the contents of Memory Field #2 to the Host PC
^FS End Field
^XZ End program
当我运行这个程序时,我不会在"接收到的数据"窗口中得到任何输出。
然而,如果我将类似^HH
的命令附加到末尾(在^XZ
之后)并重新运行程序,则会出现以前的预期输出(后面是^HH
的输出)。我需要继续重新运行命令以获得以前的输出,这样就不可能看到当前的TID值。
就好像在我运行^HH
之前,打印机不会刷新其输出缓冲区——其他命令也会临时运行。^HH
命令不适合我的应用程序,因为它产生的数据量太大。
有什么命令可以强制冲水吗?
我需要学习阅读文档。
^HV
命令有5个参数。我基于程序的示例代码只提供了前3个参数,我不认为其他参数是相关的——主要是因为Zebra给关键参数起了一个不明显的名字"command applies to
":
^HV(fieldNumber),(byteCount),(header),(terminator),(commandAppliesTo)
虽然我正确设置了fieldNumber
、byteCount
和header
(我忽略了terminator
),但我完全忽略了commandAppliesTo
参数,该参数表示:
当
^PQ
大于1
或出现无效标签时,发送一个标签格式的响应或打印的每个标签的响应。接受值:
F
=格式L
=标签默认值:
F
因此,当您不指定值时,它默认为F
,这意味着它只有在整个作业完成时才会返回数据,通过将其更改为L
,我会得到打印的每个标签的响应。
这是我的最后一个工作命令:
^XA
^RS8
^RFR,H,0,8,2
^FN1
^FS
^HV1,256,HEADER,TERMINATOR,L
^FS
^XZ
这让我的输出像这样:
HEADERE28011302000240CTERMINATORHEADERE28011302000241CTERMINATORHEADERE28011302000242CTERMINATOR
排序:)