.Net SerialPort在可用字节数超过0.5秒后才会读取字节

我使用C#中的.NET SerialPort类从端口读取字节。 在收到DataReceived事件后,我检查串行端口以查看是否可以读取字节。 但是,即使字节可用,端口也可能需要半秒以上才能读取一个字节。 法典规定如下:

...
while(Port.BytesToRead > 0) 
{
    StopWatch.Restart();
    Int32 BytesRead = Port.Read(Read, 0, 1);
    StopWatch.Stop();
    if (StopWatch.ElapsedMilliseconds > 100)
    {
    // Record the time. The stopwatch code
    // was only added after performance issues were observed.
    }
}

请注意,我测量的时间不是读取所有字节的时间,而是读取单个字节的时间。 通常我会收到一个DataReceived事件,必须等待0.5秒才能读取第一个字节。

我实际上已经尝试将Port的ReadTimeout属性设置为更小的值以防止它无限期地坐在那里,但是这个属性似乎被忽略了。

任何帮助不胜感激。


原来连接到调试器的运行导致了这个问题。 在调试器外部运行时,读取一个字节所需的最长时间大约为20ms,而运行时间不超过700ms(无断点,有条件或其他方式启用)。

作为运行发布版本时通信问题的真正原因,红鲱鱼的位可能位于其他地方。

链接地址: http://www.djcxy.com/p/64961.html

上一篇: .Net SerialPort taking over 0.5 seconds to read byte when bytes available

下一篇: SQL DateDiff without enddate