【发布时间】:2011-01-06 14:54:22
【问题描述】:
这是我的问题:我必须能够通过串行向设备发送和接收。这必须以多线程方式完成。流程如下:
等待设备向我发送内容 - 或者如果空闲,则查询状态以查看设备是否在线
如果设备向我发送了某些内容,则处理消息、确认并告诉设备在必要时执行其他命令
现在,我有一个接收线程和一个发送线程。接收线程有一个 while 循环,它通过 ReadFile(...) 不断检查串行端口的一个字节。如果我有一个字节,那么我开始构建我的缓冲区,然后解析数据以确定发送给我的内容。
发送线程接受读取线程定义的下一个命令,并通过 WriteFile 将其发送到同一个 COM 端口。关键是我自己和设备之间存在接收/发送关系。
我的问题是,我这里有嵌套的生产者/消费者模型吗?如果我的接收线程正在从设备消费,而发送线程正在向设备生产,那么线程需要固有地对话,以便它们是同步的,对吗?什么是同步我的努力以有效和快速地与设备交谈的最佳方式?注意:我使用的是 C++ Builder 5,它有 TThreads 并且可以使用临界区和互斥锁。
编辑:我也在使用轮询,所以我也愿意使用 WaitCommEvent,如果这样会更好的话!
【问题讨论】:
标签: c++ windows multithreading c++builder