相关疑难解决方法(0)

SerialPort数据丢失 - C#

我正在开发一个SerialPort应用程序,其中一个非常简单的部分就是给我一些问题.我只是想从端口读取一个恒定的数据流,并在它进入时将其写入二进制文件.问题似乎是速度:我的代码在我的9600波特率测试设备上工作正常,但是当转移到115200bps的直播设备,我似乎正在丢失数据.发生的事情是在一段可变的时间之后,我错过了1个字节,抛出了其余的数据.我尝试过几件事:

private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    bwLogger.Write((byte)serialPort1.ReadByte());
}
Run Code Online (Sandbox Code Playgroud)

要么

private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    byte[] inc = new byte[serialPort1.BytesToRead];
    serialPort1.Read(inc, 0, inc.Length);

    bwLogger.Write(inc);
}
Run Code Online (Sandbox Code Playgroud)

还有一些变化.我不能使用ReadLine(),因为我正在使用恒定的数据流(对吧?).我试过摆弄缓冲区大小(serialPort1.ReadBufferSize和硬件FIFO缓冲区).理想情况下,出于可用性目的,我将在软件方面处理此问题,而不是让用户必须更改Windows驱动程序设置.

有任何想法吗?

c# serial-port

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×1

serial-port ×1