0

如何通过 COM1 向我的收据打印机发送 DOS 命令?

我目前正在开发收银机软件,但在使用收据打印机时遇到了问题。我需要能够通过 DOS 向打印机发送十六进制命令。

到目前为止,我已尝试执行以下操作。

打开 CMD 输入 Copy con: com1 输入一个十六进制数 按 Ctrl + Z 按 Enter

根据我所阅读的内容,这应该将十六进制数字作为命令发送给打印机。但它只是将数字作为字符串发送并打印出文本。

关于我使用的打印机的一些信息:TPG A794 收据打印机。可以在此处找到有关打印机的手册:http: //www.cognitivetpg.com/downloads/A794%20Spec%20Sheet.pdf

希望有人可以帮助我,因为我已经尝试了一切,但似乎没有任何效果。

4

1 回答 1

1

不要输入十六进制代码。您需要十进制的 ASCII 码。例如:要写0xF,你必须在copy con: com1按'ALT'(按住它)后将它变成十进制(15),同时输入三位数字(015)的十进制值,然后释放'ALT'。如果它是具有多个 HexNumber 的命令,则继续下一个值。完成后,按 Ctrl-Z。

它可能更容易使用,如果您将“命令”写入文本文件,那么您可以将它们复制到 com1:例如:

copy linefeed com1:

(我没有要测试的串行设备,但它应该可以工作)

我试过了

copy con bell.txt

然后我输入007(= 0x07,这是一个响铃),Ctrl-Z。这给出了一个长度为 1 字节的文本文件

Type bell.txt

然后会发出哔哔声。

编辑 “1B”是所谓的“转义序列”(多字节命令)的代码“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”等。按照我的第一个答案中的描述创建它们。您应该首先尝试使用“简单”命令(单字节命令)来验证是否可以正常工作。要执行这些命令,请使用 . 将它们发送到 com 1 copy open1.bin com1:。对于多字节命令copy con: file.txt,在按住“alt”的同时使用 Enter 第一个值创建它们,释放“alt”,再次按下并按住第二个值,依此类推。

于 2013-06-05T17:13:06.467 回答