怎么用C#对串口发送16进制数啊
肯定是用port.read()和port.write()的
问题是 96H 01H 01H 06H A0H 00H 02H 02H 01H 43H
怎么把这串东西输入到串口给下位机去
要让电脑认为这串东西是16进制的数 而不是字符串! 我觉得最难的部分在这里啊~
最好有详细代码 谢谢~ 展开
具体步骤如下:
接收的如果是按字节接收(ReadByte),那么接收回来的数直接就可以用10进制表示,如果需要显示,可以直接在变量之后加.ToString();
不明白可直接加我HI
----------------------------------
之前的回答
byte[] t = new byte[2];
t[0] = 0xAA;
t[1] = 0xBB;
串口对象.Write(t,0,2);
其中3个参数顺序为:byte型数组,偏移(从第几位开始发,从0开始计),发送长度。
为了避免误会,额外说个基础:0xAA是 16进制的AA。
下面是一些可能会用的上的转换
private byte[] HexStringToByteArray(string s)
{//16进制字符串转化为字节数组
s = s.Replace(" ", "");
byte[] buffer = new byte[s.Length / 2];
for (int i = 0; i < s.Length; i += 2)
buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16);
return buffer;
}
private string ByteArrayToHexString(byte[] data)
{//字节数组转化为16进制字符串
StringBuilder sb = new StringBuilder(data.Length * 3);
foreach (byte b in data)
sb.Append(Convert.ToString(b, 16).PadLeft(2, '0'));
return sb.ToString().ToUpper();
}
接收的如果是按字节接收(ReadByte),那么接收回来的数直接就可以用10进制表示,如果需要显示,可以直接在变量之后加.ToString();
不明白可直接加我HI
----------------------------------
之前的回答
byte[] t = new byte[2];
t[0] = 0xAA;
t[1] = 0xBB;
串口对象.Write(t,0,2);
其中3个参数顺序为:byte型数组,偏移(从第几位开始发,从0开始计),发送长度
为了避免误会,额外说个基础:0xAA是 16进制的AA
给数组b赋你需要的值
然后发送这个数组即可,发过去的就是16进制
函数是 port.Write(byte[] buffer,int offset,int count)