我需要能够使用
将带符号的字节写入串口SerialPort.Write()方法,除了该方法只接受无符号字节的byte []数组外,如何将有符号字节写入串口?
对于我正在处理的特定命令,需要从-1700到1700的值。
感谢
恶梦
答案 0 :(得分:0)
串行通信通道没有有符号或无符号的概念,只有1和0的概念在线上。您的操作系统(最终是您的CPU架构)会在发送方和接收方为这些1和0分配数值。
您声明的值范围无法用字节表示(根据我的评论和回复)。您需要了解接收设备对给定数字(另一个设备big endian or little endian?)所期望的位模式,然后您可以发送适当的byte []序列来表示您要传输的数字。
如果两个设备具有相同的字节序,您可以设置一个short数组,然后复制到一个字节数组,如下所示:
short[] sdata = new short[] { 1, -1 };
byte[] bdata = new byte[sdata.Length * 2];
Buffer.BlockCopy(sdata, 0, bdata, 0, bdata.Length);
但是,请确保并测试一系列值。特别是如果您正在处理嵌入式设备,数字编码可能与在英特尔PC上完全不同。