关于 pos:如何在 Delphi 10.2 中使用 TComPort 清除客户显示? | 珊瑚贝

How to clear a customer display using TComPort with Delphi 10.2?


我正在使用 Winsoft 的 TComPort v6.0 连接到我的 COM5 设备,该设备是 Oxhoo 的客户显示器。(Prolific PL2303 USB-to-Serial Comm Port)

我想简单地在上面显示一些文本,然后在按下按钮时清除整个显示。我已经搜索了一个明确的命令,但它似乎不像那样工作。

现在我可以使用 Comport1.WriteString() 成功发送文本以显示,但我无法清除显示或显示文本。

此外,发送一长串空格确实会在视觉上清除显示,但将显示的下一个文本将位于随机位置。 (最后一个文本长度添加了空格)。

根据制造商的说法,它应该支持 ESC/POS 命令,但我不知道在我的 Delphi 代码中使用它们以及如何使用它们。

显示由 2 行 20 个字符组成。

1
2
> [][][][][][][][][][][][][][][][][][][][]
> [][][][][][][][][][][][][][][][][][][][]

如何清除显示并再次从第一行写入文本?

  • 是否有任何用于客户显示处理的协议?发送一长串空格会清除显示吗?”客户展示”硬件设备是否具有已知型号名称?
  • @MBo 谢谢你的回答。客户显示器的制造商是来自法国的 Oxhoo。在计算机管理中显示为 Prolific PL2303 USB-to-Serial Comm Port。我还编辑了我的帖子以提供更多信息。
  • Prolific 是 USB-COM 转换器 – 在这里并不重要,但值得添加有问题的 Oxhoo。
  • ESC/POS 命令是旧的 lineprinter 代码,具有类似背景的打字机:reference.epson-biz.com/modules/ref_escpos/… 考虑到这一点,您可以尝试使用 LF(换行 = 转到新行但与当前行的位置相同)和 CR(回车 = 移动到行首)命令 – 因此 DOS/Windows CRLF 样式用于 Enter 移动到新行的开头;)


为了简单地清除显示,我们需要发送一个 ESC/POS 命令:

1
CLR 0C Clear display screen

-> 十六进制的 0C 转换为十进制的 12。

所以对于Delphi来说就是这么简单:

1
Comport1.WriteLine(#12);
  • 好的,所以您的显示器支持 ESC/POS 协议(详细信息可能取决于具体设备)
  • 您也可以写 Comport1.WriteLine(#$0C);,这样您就不必将十六进制值转换为十进制。
  • @MBo 是的,这是正确的。我应该立即在这个方向上进行更深入的搜索。感谢 Delphi Coder 提供了避免转换十六进制值的重要提示。


来源:https://www.codenong.com/58182346/

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?