如何通过COM1将DOS命令发送到我的收据打印机?
我目前正在开发一个收银机软件,我使用收据打印机遇到了问题。我需要能够通过DOS将十六进制命令发送到打印机。
到目前为止,我已尝试执行以下操作。
打开CMD 输入复制con:com1 输入十六进制数 按Ctrl + Z. 按Enter键
根据我所读到的,应该将十六进制数作为命令发送给打印机。但它只是将数字作为字符串发送并打印出文本。
打印机上的一些信息即时使用: TPG A794收据打印机。 可在此处找到打印机上的手册: http://www.cognitivetpg.com/downloads/A794%20Spec%20Sheet.pdf
希望有人可以帮助我,因为我已经尝试了一切,似乎没有任何工作。
答案 0 :(得分:1)
请勿输入十六进制代码。您需要十进制的ASCII码。
例如:要写入0xF,必须将其转换为十进制(15)
在copy con: com1
按下'ALT'(保持按下),同时输入三位数(015)的十进制值后,然后释放'ALT'。
如果是具有多个HexNumber的命令,则继续使用下一个值。
完成后,按Ctrl-Z。
使用起来可能比较容易,如果将“命令”写入文本文件,则可以将它们复制到com1: 例如:
copy linefeed com1:
(我没有要测试的串行设备,但它应该可以工作)
我用
尝试了copy con bell.txt
然后我输入 007 (= 0x07,这是一个响铃), Ctrl-Z 。这给出了一个lenght = 1 byte
的文本文件Type bell.txt
然后会发出哔声。
修改强> “1B”是所谓的“Escape-Sequence”的代码(多字节命令)“70”是命令本身,它需要三个参数(n,p1,p2)。所以完整的序列长度为5个字节。您必须用适当的数字替换“n”,“p1”和“p2”。您将在串行设备的手册中找到那些(“1B”是所谓的“Escape-Sequence”的代码(一个多字节命令)“70”是命令本身,正如您所描述的那样,它需要三个参数(n,p1,p2)。所以完整的序列长度为5个字节。你必须用正确的数字替换“n”,“p1”和“p2”。你会在序列手册中找到那些设备(http://www.cognitivetpg.com/downloads/189-9200250C.pdf),第69页.P1和P2似乎描述时间,抽屉需要打开/提示)N描述您与之交谈的抽屉。
<强> EDIT2 强>
每个命令创建一个文件。例如。 “open1.bin”“close1.bin”等。按照我的第一个答案中的描述创建它们。您应首先尝试使用“简单”命令(一个字节命令)来验证,这样可以正常工作。要执行命令,请使用copy open1.bin com1:
将它们发送到com 1。对于多字节命令,使用copy con: file.txt
创建它们在按下“alt”时输入第一个值,释放“alt”,再按一次并按住第二个值,依此类推。