我需要能够使用将有符号字节写入串行端口
SerialPort.Write() 方法,除了该方法只采用 byte[] 无符号字节数组,我如何将有符号字节写入串行端口?
对于我正在处理的特定命令,其值从 -1700 到 1700。
谢谢
噩梦
我需要能够使用将有符号字节写入串行端口
SerialPort.Write() 方法,除了该方法只采用 byte[] 无符号字节数组,我如何将有符号字节写入串行端口?
对于我正在处理的特定命令,其值从 -1700 到 1700。
谢谢
噩梦
串行通信通道没有有符号或无符号的概念,只有线路上的 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 上的不完全相同。