所以我试图发送一个十六进制的(字符串?),看起来像这样#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的串口的字符编码是个问题。我该如何解决这个问题?
答案 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字节以避免此值。