c# - 串口传输时数据损坏

标签 c# serial-port communication

我正在开发一个与旧系统通信的程序。我为此使用 System.IO.Ports.SerialPort。问题是当我发送更长的消息时,消息会损坏。我使用线路监听器并获得以下结果

我送什么

aa 01 00 00 12 03 06 18 02 c1 94 02 c1 94 00 00 00 00 00 00 00 00 00 00 00 00 1e fd 

我得到了什么

c2 aa 01 00 00 12 03 06 18 02 c3 81 c2 94 02 c3 81 c2 94 00 00 00 00 00 00 00 00 00 00 00 00 1e c3 bd

我使用的代码是

_comPort.Encoding = new UTF8Encoding();
_comPort.PortName = PortName;  //Com1
_comPort.BaudRate = BaudRate;  //9600
_comPort.StopBits = StopBits;  //1
_comPort.DataBits = DataBits;  //8
_comPort.Parity   = Parity;    //None
_comPort.Open();

_comPort.Write(messageStr);

为什么数据会损坏,我该如何解决?

最佳答案

我的猜测是 messageStr 是一个字符串,您会看到编码问题。您已经明确指定了 UTF-8 编码,所以这就是您得到的 - 但我怀疑这不是您真正想要的。

您已经显示了二进制 数据,所以我假设您实际上想要发送那个二进制数据 - 在这种情况下您应该使用 Write(byte[], int, int)过载。

如果您真的想要写入文本数据,您可能只需要选择正确的编码 - 但您需要向我们提供更多信息,以便我们帮助您做出正确的选择。

关于c# - 串口传输时数据损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7092955/

相关文章:

c# - wcf http 绑定(bind)与 dualhttp 绑定(bind)

python - python中的蓝牙设备名称和对应的串口名称

c - 使用 C 初始化、读写 linux 串口设备

无法在 C 代码中模仿 `echo` 命令的 Action

java - java线程间通信

c# - 将数据库嵌入到 C#/VB.net 中的应用程序

c# - 继承对象列表

字节 [] 的 C# 问题

wpf - MVVM:设计具有聚合/依赖 ViewModel 的 ViewModel 架构

Android 客户端服务器通信