我正在開發一個與舊系統通信的程序。我爲此使用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);
爲什麼數據損壞,我該如何解決這個問題?
不要在字符串中存儲二進制數據。當你傳遞一個字節[]時,SerialPort.Write()在* ascii中不會*編碼,不需要對字節進行編碼。 –