我正在编写一个使用CPCL打印到Zebra蓝牙打印机的课程。 CPCL有一个getvar命令,您可以将其发送到打印机以获取打印机设置。例如:
! U1 getvar "appl.date"
此命令将返回打印机的当前日期。唯一的问题是我不知道如何从这个命令得到结果。我使用C#和CPCL打印没有问题,因为我可以将命令转换为字节数组并使用NetworkStream将其发送到打印机。但是我不知道如何从应该返回结果的命令中实际获得结果。我已经确认该命令实际上使用打印机附带的Zebra Printer Communicator返回数据。
由于
答案 0 :(得分:0)
我在这里找到了一个实际的代码示例:
https://km.zebra.com/kb/index?page=content&id=SA140&actp=LIST
代码工作正常,唯一的问题是打印机需要一段时间才能返回数据,但ReadLine会立即执行。这将返回一个空字符串。如果您等待几秒钟并再次阅读,您将获得实际结果。
答案 1 :(得分:0)
2件事...确保在最后\r\n
之后发送"
。不确定WriteLine是否为您做到了,但SGD最后需要它。另外,你是对的,你需要等待打印机在读取之前返回值。如果读取速度过快而打印机尚未响应,则无需阅读。您可以做的是查看TcpClient Available
属性,看看在实际读取之前是否有任何可用字节。您可以循环并快速等待,直到有可读取的字节,然后您可以执行读取并确保有字节可供读取