我開發了一個應用程序來從C#中的SerialPort讀取數據。它的工作正常。但是從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 string Data;
public SerialDataEventArgs(string dataInByteArray)
{
Data = dataInByteArray;
}
}
//printing the read data
string str = BitConverter.ToString(e.Data);
txtData.AppendText(str);//txtData is a TextBox
1.您發佈了兩個數據示例:它們是兩個不同程序讀取的相同數據嗎? 2.你想讀什麼設備?設備是否有關於它發送給你的文件? – nicomp