我正在尝试以非常快的速度连续从串行端口获取数据。波特率为230400。当我打印出数据、时间戳并BytesToRead写入文件时,我注意到每当BytesToRead下降到一个数字并且readLine()在这 200 毫秒内没有读取任何内容时,都会发生 200 毫秒的延迟。延迟后,BytesToRead回到 3000 左右,这个过程一次又一次地发生。本质上,我没有连续获取数据。
我想也许我的阅读速度比缓冲区中数据累积的速度要快,所以我尝试更改 readBuffer 大小并让该线程休眠 1 毫秒,以便让缓冲区跟上我正在阅读的速度。他们都没有工作。仍有一些延误。
欢迎任何想法。
 private void dostuff()//The thread I created after the port is opened
    {
        var startTime = DateTime.Now;
        var stopwatch = Stopwatch.StartNew();
        while (serialPortEncoder.IsOpen)
        {
            if (serialPortEncoder.BytesToRead > 210)
            {
                try
                {
                    var line = serialPortEncoder.ReadLine();
                    var timestamp = (startTime + stopwatch.Elapsed);
                    var lineString = string.Format("{0}  ----{1}",
                                    line,
                                    timestamp.ToString("HH:mm:ss:fff") + " "+serialPortEncoder.BytesToRead+"\r\n");
                    richTextBoxEncoderData.BeginInvoke(new MethodInvoker(delegate()
                    {
                        richTextBoxEncoderData.Text = line;//update UI                           
                    }));                                     
                }
                catch (Exception ex) { MessageBox.Show(ex.ToString()); }
            }}