首页 > 解决方案 > Visual Studio C# SerialPort 数据转 ASCII - Encoding.ASCII.GetString(data, 0, data.Length);

问题描述

我在从 SerialPort 读取的数据转换为 ASCII 时遇到问题。

当 SerialPort 上的所有数据都是 ASCII 时,它一切正常,并且使用 Encoding.ASCII.GetString(data, 0, data.Length);

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

由于某种原因,在协议模式下,数据不会以 ASCII 格式显示,而只会显示垃圾,并且没有一个字节是可读文本。

这很奇怪,因为我可以切换到另一个串行终端,即 RealTerm,并以 ASCII 文本形式查看所有传入数据。当然,一些长度字节和 CRC 数据是垃圾,因为不是 ASCII 编码,因为 > 127 十进制。

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

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

标签: c#serial-portascii

解决方案


推荐阅读