延迟是否阻止数据接收

时间:2011-09-09 17:46:21

标签: c# serial-port delay data-loss

我正在开发一个关于Visual Studio C#的项目。

我通过串口从连接到PC的设备收集数据。 首先,我发送请求命令,然后等待响应。 发送请求命令后,设备响应延迟1秒。 事情是设备可能无法到达,有时可能无法响应。 为了等待响应(如果有的话)而不是提前发送下一个数据请求命令,我通过以下方法做出延迟:System.Threading.Thread方法。

我的问题是,如果我将延迟时间延长,我是否会松开串口数据接收。

我使用的延迟功能是:

    private void Delay(byte WaitMiliSec)
    {
        // WaitTime here is increased by a WaitTimer ticking at every 100msec

        WaitTime = 0;
        while (WaitTime < WaitMiliSec)
        {
            System.Threading.Thread.Sleep(25);
            Application.DoEvents();
        }
    }

1 个答案:

答案 0 :(得分:2)

不 - 你不会丢失任何数据 - 串口有自己的缓冲区,完全不依赖于你的应用程序。操作系统和硬件将为您处理此问题。

我建议将数据发送/接收重构到它自己的任务/线程中。这样您就不需要Application.DoEvents();

如果你发布了更多的发送/接收代码,我可能会帮助你。

PS:在我看来你的代码无论如何都不会工作(WaitTime总是零)但我想这只是一个片段吗?