串口通讯问题
其中具体代码如下:
代码解读:之前的问题是接收汉字显示乱码,我找到原因是因为之前的代码是一个字节一个字节读取,而汉字是两个字节因此会拆分汉字形成乱码,然后新代码我从串口收到数据,然后读取之后全部存到字节数组中,然后用Encoding.Default.GetString进行将字节数组转换为字符串 ,成功汉字转化成功,将汉字转化成十六进制也数据正确,但是当我接收十六进制数据的时候,数据为:C1 0C 01 01 00 11 00 0F 00 96 00 B8 0B 02 F6 45,却得不到正确的数据,开头的C1 0C显示错误,中间一些数据也显示错误,求解释
//// 读取所有待接收的数据到字节数组中
//byte[] buffer = new byte[serialPort1.BytesToRead];
//int bytesRead = serialPort1.Read(buffer, 0, buffer.Length);
////可接受汉字
//if (bytesRead > 0)
//{
// // 使用Default默认 编码将字节数组转换为字符串
// string receivedData = Encoding.Default.GetString(buffer, 0, bytesRead);
// sbRX.Remove(0, sbRX.Length);
// // 将接收到的字符串追加到StringBuilder中
// if (!isClosing)
// {
// sbRX.Append(receivedData);
// }
//}
////要获取字节数然后一个一个取!
//byte[] b = Encoding.GetEncoding("GB2312").GetBytes(strASCII); ;//按照指定编码将string编程字节数组
//StringBuilder sbHex = new StringBuilder();
//for (int i = 0; i < b.Length; i++)//逐字节变为16进制字符
//{
// // 将每个字节转换为两位十六进制数,并添加空格(但不在最后一个字节后添加)
// sbHex.Append(b[i].ToString("X2"));
// sbHex.Append(" ");
//}
//return sbHex.ToString();