因為這個問題感覺跟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結束要重新啟動....
我不知道哪種方法比較好,不知道有無強者可指教,感謝。