这种情况是由于在串口传输的是字节(而不是字符串),但接收时先按照字符串接收再转换为字节导致的,因为ASCII不能超过0x80,错误代码如下:
private void m_serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort serialPort = sender as SerialPort;
this.BeginInvoke(new DE_DoSerialDatas(DoSerialDatas),
Encoding.UTF8.GetBytes(serialPort.ReadExisting()));
}
正确代码如下:
private void m_serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort serialPort = sender as SerialPort;
Byte[] rcvData = new Byte[serialPort.BytesToRead];
serialPort.Read(rcvData, 0, rcvData.Length);
this.BeginInvoke(new DE_DoSerialDatas(DoSerialDatas), rcvData);
}