看板 Programming 關於我們 聯絡資訊
大家好 最近拿到一台設備 會透過RS232丟資料出來 丟出來的資料都是簡單的數字帶一個「:」 所以寫了一支程式去接收數據 大概每0.1秒read一次 但發現有時候取得的資料長度會不一樣 也就是說,取得的資料格式沒有很固定 大部分時候都是正常的,像是 000: 036: 157: 但有時會讀到下面這種 0: 00: 甚至有時候會讀到空字串 不曉得是不是接收程序上有什麼問題? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.226.196.28 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1714542172.A.41B.html
cancelpc: rs232容易受干擾,至少用rs484118.161.193.244 05/01 13:56
oisi: 是不是斷句斷錯位置,通常是開頭碼固定,你 1.160.166.16 05/04 23:31
oisi: 的設備通訊開頭碼是:,後面才是內容。試試 1.160.166.16 05/04 23:31
oisi: 看改用定時讀取封包,判斷到開頭碼之後的3碼 1.160.166.16 05/04 23:31
oisi: 是內容。 1.160.166.16 05/04 23:31
alex70266: linux的話用poll去抓event,有POLL_IN 42.70.192.222 06/20 17:18
alex70266: event的時候再去read,read進來的長度 42.70.192.222 06/20 17:18
alex70266: 不一定會是剛好完整的一筆,所以你要先 42.70.192.222 06/20 17:18
alex70266: 丟去暫存buffer,再從暫存找合理的一包 42.70.192.222 06/20 17:18
alex70266: data再做解析 42.70.192.222 06/20 17:18
alex70266: 通常會建議這種走在serial或者tcp通道 42.70.192.222 06/20 17:19
alex70266: ,自己訂的protocol要做開頭跟結尾的pa 42.70.192.222 06/20 17:19
alex70266: ttern 42.70.192.222 06/20 17:20
alex70266: windows還是其他平台應該都會有類似類 42.70.192.222 06/20 17:20
alex70266: 似poll的system api可以用,細節我就相 42.70.192.222 06/20 17:20
alex70266: 對不熟了 42.70.192.222 06/20 17:20
tomjpsun: 先不要跑你的程式,先用minicom 類似的 114.43.64.134 06/28 14:32
tomjpsun: terminal 程式來觀察。 114.43.64.134 06/28 14:33