(C#)通过串口发送十六进制

时间:2015-07-24 00:51:52

标签: c# communication hardware type-conversion

所以我试图发送一个十六进制的(字符串?),看起来像这样#34; 7E 00 00 FF 00 00 00 00 00 00 00 00 00 00 00 00 00 FF"通过串口。我的代码如下所示:

serialport.write("7E 00 00 FF 00 00 00 00 00 00 00 00 00 00 00 00 00 FF");

接收它的控制器没有确认这个数据,我假设默认为ASCII的串口的字符编码是个问题。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

我认为您使用的是SerialPort Class,对吧?

然后,我认为您要解析字符串,将十六进制值转换为字节,然后直接写入字节。

我在想这样的事情:

string str = "7E 00 00 FF 00 00 00 00 00 00 00 00 00 00 00 00 00 FF";
byte[] bytes = str.Split(' ').Select(s => Convert.ToByte(s, 16)).ToArray();
serialport.Write(bytes, 0, bytes.Length);

答案 1 :(得分:1)

值0xFF用于表示UART Rx缓冲区为空,因此需要通过常规串行转换为代表性ASCII字节以避免此值。