通訊組件使用spcomm,在一個函式中發送指令,發送后函式就結束了,這時結果還沒有回傳,需在訊息處理事件中才得到回傳結果,如何將發送指令和回傳結果整到一個函式中?
uj5u.com熱心網友回復:
你這個函式也必須等待,在可SPCOMM的資料接收事件中更換函式的變數,此時函式回傳資料,或等某個時間后回傳錯誤或其它值。uj5u.com熱心網友回復:
不用事件接收,手工接收吧。一個函式大概如下形式:
Write(); //寫串口
Sleep(); //等待
Read(); //讀串口
這兒的等待,如果串口設備回應時間比較固定,可以用Sleep()固定延時一個時間,如果是不定長的回應時間,可以檢查接收到的資料長度,接收資料長度夠了就回傳
uj5u.com熱心網友回復:
覺得這種通訊還是回呼程序好過!uj5u.com熱心網友回復:
可以通過握手,發過去,等待回來,回來的資訊中可以附帶你要的資料uj5u.com熱心網友回復:
查詢輸入緩沖區的位元組數(InputCount),如果大于0就讀取。當然這個通訊程序最封裝到一個執行緒中去比較好。uj5u.com熱心網友回復:
我是在函式中用一個子執行緒向串口發送和接收,主執行緒使用waitforsingleobject(thread.handle, 2000),但是主執行緒一呼叫waitforsingleobject,子執行緒也接收不到串口訊息了,waitforsingleobject超時后再收到訊息,各位是用什么方法等待?uj5u.com熱心網友回復:
主執行緒使用waitforsingleobject(thread.handle, 2000), thread.handle是誰的handle?
uj5u.com熱心網友回復:
當然是子執行緒的handle
uj5u.com熱心網友回復:
可能子執行緒已經收到串口訊息,只是主執行緒在Wait時被阻塞,所以你覺得沒收到訊息轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/130911.html
標籤:網絡通信/分布式開發
上一篇:求C++幫轉換 DELPHI YUY2_RGB函式 跟顯示RGB的代碼!
下一篇:請問有懂PureBasic的嗎?
