0

我需要能够使用将有符号字节写入串行端口

SerialPort.Write() 方法,除了该方法只采用 byte[] 无符号字节数组,我如何将有符号字节写入串行端口?

对于我正在处理的特定命令,其值从 -1700 到 1700。

谢谢

噩梦

4

1 回答 1

0

串行通信通道没有有符号或无符号的概念,只有线路上的 1 和 0 的概念。是您的操作系统(最终是您的 CPU 架构)在发送端和接收端为这些 1 和 0 分配一个数值。

您声明的值范围不能以字节表示(根据我的评论和您的回复)。您需要了解接收设备对给定数字期望的位模式(另一个设备是大端还是小端?),然后您可以发送适当的字节 [] 序列来表示您要传输的数字。

如果两个设备具有相同的字节序,您可以设置一个短数组,然后复制到一个字节数组,如下所示:

short[] sdata = new short[] { 1, -1 };
byte[] bdata = new byte[sdata.Length * 2];

Buffer.BlockCopy(sdata, 0, bdata, 0, bdata.Length);

但是,请确保并测试一系列值。尤其是在处理嵌入式设备时,数字编码可能与英特尔 PC 上的不完全相同。

于 2012-05-03T16:31:19.900 回答