我正在开发一个关于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();
}
}
答案 0 :(得分:2)
不 - 你不会丢失任何数据 - 串口有自己的缓冲区,完全不依赖于你的应用程序。操作系统和硬件将为您处理此问题。
我建议将数据发送/接收重构到它自己的任务/线程中。这样您就不需要Application.DoEvents();
如果你发布了更多的发送/接收代码,我可能会帮助你。
PS:在我看来你的代码无论如何都不会工作(WaitTime总是零)但我想这只是一个片段吗?