【发布时间】:2012-06-25 11:57:29
【问题描述】:
我正在开发一个使用 8 个 COM 端口的应用程序,当从一个 COM 端口接收到数据时,将调用事件处理程序,应用程序为通过 COM 端口接收的消息创建包装器,并将其发送通过 TCP 到远程主机。事实上,在包装之后,它就变成了基于以太网的网络中某处设备的命令(开始测量命令)。
我正在使用 SerialPort 和 SerialDataReceivedEventHandler 来处理 COM 端口。问题是我通过表单为每个 COM 端口指定了不同的超时(0-1000 毫秒)。在此超时之后,我必须发送另一个命令以从设备获取一些数据(获取数据命令)。
- 此命令对于 8 个 COM 端口中的每一个都不同
- 此命令只能在通过 COM 端口接收数据并发送第一个命令后发送
- 两个命令之间的超时对于每个 COM 端口都不同
您对超时组织有什么建议吗?谢谢。
我有一个想法,但不确定是否可行: 每个 COM 端口都有 8 个事件处理函数。
...something
sendFirstCommand();
Thread.Sleep(comPortNTimeout);
sendSecondCommand();
我可以在它们中使用相同的结构吗?例如,如果数据 Thread.Sleep() 将在第二个端口的处理程序中调用,那么第一个端口的处理程序是否会被冻结?
【问题讨论】:
标签: c# multithreading events serial-port