【问题标题】:How to print code hexadecimal OR decimal OR binary in printer?如何在打印机中打印代码十六进制或十进制或二进制?
【发布时间】:2013-03-31 19:35:08
【问题描述】:

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

更具体一点:

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

谢谢

【问题讨论】:

  • 与外部设备通信时,我建议使用字节数组,但您需要了解打印机的通信方式。

标签: c# binary hex special-characters printers


【解决方案1】:

在 C# 中,您可以使用(例如)串行端口类(如果该打印机具有串行接口)或标准 I/O 类(例如,如果它具有并行接口,您将解决 @987654321 @ 设备)。

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

不要将他们在文档中编写命令的方式(十进制、十六进制)与您发送的内容混淆:字符 A 具有 ASCII 码 65(十进制和 41 十六进制),它始终是字节值及其 ASCII 码。

对于 EPSON 打印机,您使用 ESCAPE 字符(ASCII 码 27)来启动命令序列,随后的字节将被解释为命令并且它们不会被打印为文本(假设您发送此序列:27 65,它不会打印A 字符,但它会解释命令号65 - 如果它存在)。让我们从该文档中查看这个示例:

ASCII ESC M n 十六进制 1B 4D n 十进制 27 77 n

您只有三种方式来表示该序列(第一种是 ASCII 和名称,第二种是十六进制值,第三种是十进制值)。这是给您的,您将始终向打印机发送三个字节(同样,字节不是带有十进制表示的字符串)。

的符号不是该打印机的已知字符(否则您可以简单地设置代码页并快乐地生活)。您可以做的是丢弃您拥有但不使用的字符之一,并使用 ESC & 命令将其替换为自定义字符(示例文档的第 113 页) ,您将发送打印机将为该字符打印的位图(= 1 和 0 的矩阵)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-29
    • 1970-01-01
    相关资源
    最近更新 更多