【发布时间】:2015-10-27 10:25:54
【问题描述】:
我开发了一个应用程序来从 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. 你想读什么设备?该设备是否有关于它向您发送什么的文档?
标签: c# matlab serial-port