将Visual Studio C#SerialPort数据转换为ASCII-Encoding.ASCII.GetStringdata,0,data.Length;

问题描述

从串行端口读取的数据转换为ASCII时遇到问题。

当SerialPort上输入的所有数据均为ASCII时,一切正常,并使用Encoding.ASCII.GetString(data,0,data.Length)很好地显示可读字符;

但是,当我切换到协议模式时,进入的数据具有数据包的开头(0x02),后跟两个长度字节,后跟ASCII字节,最后是CRC字节,后跟结束字节(0x03)。在协议模式0x02中,使用0x10对0x03进行转义,然后对转义的字节进行XOR。

出于某种原因,在协议模式下,数据不以ASCII格式显示,而仅显示垃圾内容,并且可读字节不是单个字节。

这很奇怪,因为我可以切换到另一个串行终端(即RealTerm),并查看所有传入的数据,就像ASCII文本一样。当然,某些长度的字节和CRC数据由于不是> 127十进制,所以不是ASCII编码的,因此是垃圾邮件

我使用: Encoding.ASCII.GetString(data,0,data.Length);

其中data是从SerialPort接收的数据的字节数组。 有什么建议吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)