如何在VB中将带符号的字节写入串口

时间:2012-05-03 16:23:14

标签: vb.net

我需要能够使用

将带符号的字节写入串口

SerialPort.Write()方法,除了该方法只接受无符号字节的byte []数组外,如何将有符号字节写入串口?

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

感谢

恶梦

1 个答案:

答案 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上完全不同。