我需要在两个连续的modbus 16位寄存器中编码32位有符号整数。 要求规定字节顺序应为little endian,低地址寄存器应为low word。
tcp 流中的最终字节顺序是什么?
假设我想发送号码287.454.020。
写为“自然”十六进制数,即:
0x11223344
如果我理解正确的话,我会认为应用低词和高词会导致:
Regsiter 0: 0x3344 // low word
Register 1: 0x1122 // high word
当我现在应用小端字节顺序时,我最终得到:
Regsiter 0: 0x4433 // low word
Register 1: 0x2211 // high word
因此在 TCP 流中将是:
44 33 22 11
然而,接收者似乎期待以下命令:
33 44 11 22
但这不是大端吗?
我认为接收者期望的顺序应该被称为 Mid-Little Endian。
有人可以澄清一下吗?
然而,接收者似乎期待以下命令:
33 44 11 22
您所描述的是一种期望交换单词的设备,但单词的字节顺序保持不变。
不幸的是,像这样愚蠢的事情在 Modbus 世界中并不罕见。换个词就行了。