以16进制的方式进行串口通信,发送时得将十六进制字符串转换成byte[]数组,接收时得将byte[]转换成十六进制字符串显示
1.十六进制字符串转byte[]数组
string str = $"aa 55 00 01 0c 0d cc 33";
byte[] bytes = str.Split(' ').Select(x => Convert.ToByte(x, 16)).ToArray();//十六进制字符串转byte[]数组
serialPort.Write(bytes, 0, bytes.Length);//串口发送数据
2.byte[]转十六进制字符串
if (serialPort.BytesToRead > 0)
{
byte[] temp = new byte[serialPort.BytesToRead];//定义接收byte[]数组
serialPort.Read(temp, 0, serialPort.BytesToRead);//接收到byte数组数据
var hex = BitConverter.ToString(temp, 0).Replace("-", " ").ToLower();//byte[]转十六进制字符串
Console.WriteLine("Receive:" + hex);
}
其中,BitConverter.ToString 方法将指定的字节数组的每个元素的数值转换为它的等效十六进制字符串表示形式。例如“7F-2C-4A”。