0

我正在开发一个关于 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();
        }
    }
4

1 回答 1

2

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

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

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

PS:在我看来,您的代码无论如何都不起作用(WaitTime 始终为零),但我想这只是一个片段,对吧?

于 2011-09-09T17:59:07.110 回答