應該是 串列埠輪詢我這裡有一個裝置,該裝置能夠提供rs-485通訊,這個裝置是用被動的模式實現rs-485通訊的.通訊協議我有.需要有一套軟體對該裝置(可能是255個)進行輪詢,而後捕獲各個資料反饋資料採集到以後需要儲存到資料庫中.輪詢的演算法寫不出來,請大家看看我的程式碼,幫忙提提建議,謝謝! 我的想法是: 用定時器每5分鐘輪詢一次,每個週期需要從5臺裝置query資料. 在一個輪詢週期中,主機需要分別發一個命令給每個裝置,收到裝置回答後,方可繼續query下一個裝置. 依次查詢,5臺都查完之後, 等到下一個輪詢週期到來.再分別發命令給5臺裝置. 我的困難是不知道如何實現上面的演算法: 我在OnTimer 裡面發命令給裝置,COM1口如果有資料,即觸發MSCOMM控制元件的OnCommMscomm1事件.在這個事件處理函式中,如果資料包沒結束,則先KillTimer(暫停定時器,即下一個命令不能發), 如資料包接收完整,則再次SetTimer. 可是我的程式碼只能應對一臺裝置, 5臺裝置怎麼辦呢? 在OnTimer函式中for迴圈好像不行吧. 我要的是: 主機與一臺裝置對話時, 不能再發下一個命令, 直到收到當前裝置迴應. 收到後立馬再與下一個裝置通話, 5臺全部通訊完, 停止等待下一個query週期的到來.
應該是 串列埠輪詢我這裡有一個裝置,該裝置能夠提供rs-485通訊,這個裝置是用被動的模式實現rs-485通訊的.通訊協議我有.需要有一套軟體對該裝置(可能是255個)進行輪詢,而後捕獲各個資料反饋資料採集到以後需要儲存到資料庫中.輪詢的演算法寫不出來,請大家看看我的程式碼,幫忙提提建議,謝謝! 我的想法是: 用定時器每5分鐘輪詢一次,每個週期需要從5臺裝置query資料. 在一個輪詢週期中,主機需要分別發一個命令給每個裝置,收到裝置回答後,方可繼續query下一個裝置. 依次查詢,5臺都查完之後, 等到下一個輪詢週期到來.再分別發命令給5臺裝置. 我的困難是不知道如何實現上面的演算法: 我在OnTimer 裡面發命令給裝置,COM1口如果有資料,即觸發MSCOMM控制元件的OnCommMscomm1事件.在這個事件處理函式中,如果資料包沒結束,則先KillTimer(暫停定時器,即下一個命令不能發), 如資料包接收完整,則再次SetTimer. 可是我的程式碼只能應對一臺裝置, 5臺裝置怎麼辦呢? 在OnTimer函式中for迴圈好像不行吧. 我要的是: 主機與一臺裝置對話時, 不能再發下一個命令, 直到收到當前裝置迴應. 收到後立馬再與下一個裝置通話, 5臺全部通訊完, 停止等待下一個query週期的到來.