我正在尝试以非常快的速度连续从串行端口获取数据。波特率为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()); }
}}