private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
System.Threading.Thread.Sleep(200);//延时200ms等待接收完数据
Invoke((EventHandler)(delegate
{
Cnt = serialPort1.BytesToRead; //获取接收缓冲区中的字节数
serialPort1.Read(Buf, 0, Cnt); //读取接收缓冲区中num个字节到byte数组中
}
)
);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
1.CH340驱动 2400波特率下, 进serialPort1_DataReceived(),实测接收了80%数据 2. FT232驱动 2400波特率下, 进serialPort1_DataReceived(),实测接收了12%,差不多接收到几个字节就进中断。所以延时要根据接收的数据帧长度来保证数据帧接收完整。 3. 其他驱动的设备例如CP2102、PL2303等后期再测试。
|