(C#) 通过串口发送十六进制
(C#) sending hex over serial
所以我试图通过串行端口发送一个(字符串?)看起来像这样的十六进制“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 的串行端口的字符编码是一个问题。我将如何解决这个问题?
我猜你用的是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);
值 0xFF 用于表示 UART Rx 缓冲区为空,因此需要通过传统串行转换为具有代表性的 ASCII 字节以避免此值。
所以我试图通过串行端口发送一个(字符串?)看起来像这样的十六进制“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 的串行端口的字符编码是一个问题。我将如何解决这个问题?
我猜你用的是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);
值 0xFF 用于表示 UART Rx 缓冲区为空,因此需要通过传统串行转换为具有代表性的 ASCII 字节以避免此值。