(c#)发送十六进制串行

本文关键字:十六进制 | 更新日期: 2023-09-27 18:04:28

所以我试图发送一个(字符串?)十六进制看起来像这样的"7E 00 00 FF 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是一个问题。我该如何解决这个问题?

(c#)发送十六进制串行

我认为您正在使用SerialPort类,对吗?

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

我在想这样的事情:

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字节以避免此值。