上位機給下位機發送一個資料包,如果校驗位正確就執行指令,然后下位機回報一個資料包給上位機;
但我現在需要多次回報資料包,剛開始執行指令時回報一次,中間回報一次,指令完成再回報一次資料包,這個間隔怎么寫,請問該怎么辦啊?
還有,上位機給下位機發送資料包,校驗位錯了就不會執行指令;那下位機給上位機的回報資料包校驗位錯了會怎么樣?指令都運行完了,會發生啊?
uj5u.com熱心網友回復:
一般的設計,長時間的操作的話,不會使用阻塞模式的回應,{
//發送命令
//等待命令回應
//設定超時時間
do
{
//查詢狀態
//if(命令完成OK) break;
//執行某些操作
}while(未超時);
}
如果確實是阻塞式的回應(執行完成前不接受其它指令),大概思路
do
{
//發送命令
//等待&接收回應1
//等待&接收回應2
//等待&接收回應3
}while(0);
一般上位機做主機, 主機一般會負責通訊超時、錯誤的處理,
通訊錯誤、超時時一般應該重試幾次,以增強系統的健壯性和容錯性。連續錯誤超過N次 可以彈窗提示用戶干預
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/263086.html
上一篇:兩幅影像相似度對比該如何實作?
下一篇:校驗位檢驗
