SerialPort通信,位结束?

您好,我正在尝试通过SerialPort将命令发送到财务打印机。

我发送某些命令以打印某些纸张。我根据文档协议构造了数据包:

名称SOH LEN SEQ CMD DATA后同步码BCC ETX

长度/字节1 1 1 1 0-200 1 4 1

值(01h)(20h-FFh)(20h-FFh)(20h-FFh)(20h-FFh)(05h)(30h-3Fh)(03h)

缩写:

“ SOH”-(标题开始)打包邮件的开始

“ LEN”-从位置2到位置6的字节总数,加上20h的固定偏移量。

“ SEQ”-数据包的序列号。 SLAVE在回复消息中放置相同的“ SEQ”。如果SLAVE接收到的消息与上次正确接收的消息一样具有相同的“ SEQ”和“ CMD”消息,则设备将忽略该消息并重复发送到主机的最后一个数据包。

“ CMD” –命令代码

“ DATA”-数据,根据命令。如果没有数据,则长度字段为零。

“ BCC” –控制和(0000h-FFFFh)。从位置2到位置6的数据字节总和。控制和以ASCІІ类型传输(12АВ传输为31h 32h3Аh3Вh)。

“ ETX” –(TeXt的结尾)打包消息的结尾。

我有两个问题。

首先不识别包的末尾。当我运行示例程序并生成数据包0x01 0x24 0x25 0x45 0x05 0x30 0x30 0x39 0x33 0x03时,它将输出所需的结果。但是,当重新运行它时,从属不会响应。我使用监视软件检查了串行端口流,并注意到在我的代码示例中,下一个字节数组被追加到前一个字节数组中,而不是单独发送。

第二个问题是按我的描述计算BCC,但是文档中的(12А转移为31h 32h3Аh3Вh)使我感到困惑,我不明白为什么3Ah和3Bh。最后两个字节在我的计算中总是与预期不同。

arr
yz1987cn 回答:SerialPort通信,位结束?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3131508.html

大家都在问