Как читать двоичные данные из последовательного порта без какой-либо кодировки?
Привет,
Я разработал приложение для чтения данных из SerialPort на языке C#. Он работает нормально. Но данные, считанные из SerialPort, отличаются от того, что я ожидал.
Когда я читаю порт с помощью XCTU или Matlab он дает следующие данные,
00 00 e2 00 40 74 95 07 02 25 14 00 8a 92 00 77 ff
Но когда я читаю те же данные из приложения C#, оно дает,
8C3F275A483F
Я ожидаю получить результирующие данные приложения C#, такие как результат работы Matlab и XCTU. Я пробовал использовать кодировки SerialPort (ASCIIEncoding, Unicode, Latin). Но ничего не работает. Помоги мне. это мой код,
//DataReceived event handler public event EventHandler<SerialDataEventArgs> NewSerialDataRecieved; //Serial Port Initialization SerialPort _serialPort = new SerialPort("COM3",9600,Parity.None,8,StopBits.One); _serialPort.DataReceived += new SerialDataReceivedEventHandler(_serialPort_DataReceived); _serialPort.Open(); //DataReceived event void _serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { int dataLength = _serialPort.BytesToRead; byte[] data = new byte[dataLength]; int nbrDataRead = _serialPort.Read(data, 0, dataLength); if (nbrDataRead == 0) return; if (NewSerialDataRecieved != null) NewSerialDataRecieved(this, new SerialDataEventArgs(data)); } //class SerialDataEventArgs public class SerialDataEventArgs : EventArgs { public byte[] Data; public SerialDataEventArgs(byte[] dataInByteArray) { Data = dataInByteArray; } } //printing the read data string str = BitConverter.ToString(e.Data); txtData.AppendText(str);//txtData is a TextBox
[no name]
Код?
VR Karthikeyan
@pwasser Привет, я добавил свой код в вопрос
Alan N
Это правильный код? Массив байтов "data", считанный из порта, присваивается строке в SerialDataEventArgs.
VR Karthikeyan
Извините, я забыл упомянуть, что использую BitConverter для преобразования данных (байтовый массив) в строку. Отредактировано в вопросе.
Alan N
... и это означает, что определение класса SerialDataEventArgs не может быть правильным. Пожалуйста, ознакомьтесь со всем опубликованным кодом.