如何在打印机中打印代码十六进制或十进制或二进制?

时间:2013-04-09 11:36:58

标签: c# binary hex special-characters printers

我想要执行一个打印机epson TM-T88III的命令。

更具体:

我怀疑的是:我是怎么做到的?我如何通过c#将这些命令设置为打印机?我选择什么? Hexodecimal?二进制?十进制?我很困惑!

谢谢

1 个答案:

答案 0 :(得分:1)

在C#中,您可以使用(例如)串行端口类(如果该打印机具有串行接口)或标准I / O类与打印机通信(例如,如果它具有并行接口,则可以使用{{ 1}}设备)。

打印机是一个字符设备,然后您将始终发送字节(一个字符= 1个字节,因为该打印机使用8位ASCII)。它会将该字节解释为ASCII码(根据当前代码页)来打印字符。要向他们发送命令,您必须使用他们的语言,因为某些ASCII字符是特殊的(代码小于LPTx:的所有字符),它会将某些序列解释为命令。

不要混淆他们将文档中的命令(十进制,十六进制)写入您发送的内容的方式:字符32具有ASCII代码A(十进制和65 in十六进制),它总是带有ASCII码的字节值。

对于EPSON打印机,您使用41字符(ASCII代码ESCAPE)来启动命令序列,后面的字节将被解释为命令,它们不会被打印为文本(让我们想象一下)您发送此序列:27,它不会打印27 65字符,但它会解释命令编号A - 如果存在的话)。让我们从该文档中看到这个例子:

ASCII   ESC   M   n
Hex     1B    4D  n
Decimal 27    77  n

您只有三种方式来表示该序列(首先是ASCII和名称,第二种是十六进制值,第三种是十进制值)。这是给你的,打印机你总是发送三个字节(再次字节不是带有十进制表示的字符串)。

65的符号不是该打印机的已知字符(否则您只需设置代码页并过得开心)。您可以做的是丢弃您拥有但未使用的其中一个字符,并使用命令将其替换为自定义字符(文档的第113页)例如),你将发送一个打印机将为该角色打印的位图(= 1和0的矩阵)。