1樓:匿名使用者
將要傳送的命令新增到list中,開一個執行緒去依次發次list中的命令。
設定一個
標誌,傳送後將標誌isreceived設定為false,然後迴圈判斷該標誌的狀態,直到變為true即接收到有效資料,或者時間超過一定後還為false視為接收出錯或者超時。
在serialport的接收事件datareceived接收資料處理,當接收正確將isreceived設定為true,錯誤設定為false。
當然這裡的標誌可以設定得更細化,用一個enum型別來表示
2樓:輕舞霓裳
首先定義好通
訊協議。應答式和連續式並沒有太大的區別。 都是定義好通訊協議,首先上位機傳送命令,下位機接受到命令傳送資料。
上位機判斷資料長度,資料的型別,最後做資料校驗,通過資料長度判斷是否全部接收成功,再判斷資料的準確性。當資料沒有問題則繼續發生資料請求,如果資料有問題則向你說的清楚資料再傳送資料請求命令。
3樓:匿名使用者
我做過這樣的工程,用執行緒使用定時器定時傳送命令,另外的執行緒等待資料到達即可,資料到達後可以通過校驗位監測資料是否正確,錯誤的直接丟棄,正確的進一步處理,比如存入資料庫。
如果到達的資料是請求應答,那麼就傳送一個應答。
c串列埠通訊多條字串迴圈傳送的問題
多執行緒自然是要用的,否則介面就死鎖。原理很簡單,把要發的資料存成結構化陣列,開一個執行緒傳送 接收是用serialport的接收事件。有一些優秀的串列埠軟體,像格西烽火等,你也可以參考一下。利用c 向串列埠按順序迴圈傳送一條一條指令的問題 1 在介面新增串列埠 控制元件2 設定串列埠的屬性 3 根...
C串列埠程式點選按鈕傳送資料可以接收亂碼無法正常顯示
多半是編碼問題,專案打包壓縮發來看 傳送是utf 8編碼的,接收用ascll,不能正常解析吧 c 串列埠 點選按鈕傳送資料 但是隻要串列埠有資料過來就跳轉到接收處理完接收再回到剛才的那個點上繼續 把傳送指令發到時鐘中執行,在定義一個bool變數,如果第一組資料傳送並接受到資料後,設定bool變數為t...
11F04E微控制器串列埠通訊,傳送1,回傳資料混亂沒有規則(波特率4800),串列埠初始化有問題嗎
你的程式有兩個問題,一是波特率計算錯誤,串列埠方式1用t1的方式2控制波特率,與傳統51是完全相容的。而你的th1,tl1初始值的計算是時鐘不分頻的方式,需要設定auxr暫存器才行。二是串列埠中斷程式中的判斷錯誤,電腦傳送的1是字元,所以應改為 if receivedata 1 1是字元 你的串列埠...