因为这个问题感觉跟C/C++有点远,就来这问了。
我对Windows API很不熟,希望大大不要介意。
目前在Windows(装置A)写一个API,要跟另一个装置B以UART(COM)沟通。
沟通的模式分两种:
1. A发送然后接收B的应答(两秒内没回答算timeout)
2. A自动接收B的讯息(只需接收不需回应,也不需很快接收,2-3sec内即可)。
模式1中,A发送到B应答期间B不会送出除了A要求以外的讯息。
目前想的是用主process做1(这部份已经完成),然后另开一个thread做2的部份。
只是因为这两个模式共用同一个COM port,所以不太晓得2的thread怎么做
有以下想法:
- 用无限循环,2的thread每秒当共用变量a=1时接收一次data (readFile)
a=0时就纯粹Sleep(1000)。
当要切到模式1,就把a切到0,做完就切回去1。
不过这个方法需要在切换时先确定COM port是不是在使用中....(不知如何做)
- 用无限循环但是用WaitCommEvent等待buffer有东西进来。
可是这样切到模式1的话一样要强制WaitCommEvent返回
模式1结束要重新启动....
我不知道哪种方法比较好,不知道有无强者可指教,感谢。