Data gets corrupted during transmission over the serial port

浪子不回头ぞ 提交于 2019-12-20 04:34:52

问题


I am developing a program to communicate with an old system. I use System.IO.Ports.SerialPort for this. The problem is when I send a longer message, the message bevome corrupt. I use a line listener and get the following results

What I sending

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 

What I get

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

The code I'm using is

_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);

Why is data corrupted and how do I fix this?


回答1:


My guess is that messageStr is a string, and you're seeing encoding issues. You've explicitly specified the UTF-8 encoding, so that's what you're getting - but I suspect it's not what you really want.

You've shown binary data, so I assume you actually want to send exactly that binary data - in which case you should use the Write(byte[], int, int) overload.

If you really want to write text data, you probably just need to pick the right encoding - but you'll need to give us more information for us to help you make the right choice.



来源:https://stackoverflow.com/questions/7092955/data-gets-corrupted-during-transmission-over-the-serial-port

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!