看板 AndroidDev 關於我們 聯絡資訊
!!!以上為暫存檔內容 以下為目前文章內容 請自行合併!!! 作者: ZAXUS (小廢物) 看板: AndroidDev 標題: [問題] 使用pl2303 driver開發uart應用 時間: Thu Dec 3 15:34:24 2020 機器在我送出request後 會回傳json格式的訊息 送出與接受採一問一答 接受與發送間隔2秒 我用 var buffer=byte[1024] while(inputstream.read(buffer)>0){  sleep(1) //handle msg } 偶爾會出現只讀一次就讀到完整訊息 比較常出現loop第一次讀到一半 第二段就亂掉了的情況 我試過調整sleep長短和buffer大小 發送時也有flush() 但還是會這種情形發生 正常的時候可以持續很久 收到不完全的msg也會持續相同的情況 想請教可能是哪邊出問題了 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.166.223 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1606980866.A.1A8.html
kobe8112: 你收送是恆定大小或不定大小?為啥需要在這裏面睡覺 12/03 18:24
ZAXUS: 不定大小,不睡的情況也一樣耶 12/03 20:16
kobe8112: 我是指你睡的時機我覺得奇怪, 12/04 12:46
kobe8112: 我自己寫是通訊分指令跟資料封包,指令恆定大小, 12/04 12:47
kobe8112: 資料不定大小,因此可藉由前一項指令知道接下來要收多少 12/04 12:48
kobe8112: 你如果是永遠不定大小,但至少每一次的最大傳輸時間可以 12/04 12:49
kobe8112: 估計吧? 應該是讀取執行緒固定睡這個時間,醒來時將所有 12/04 12:50
kobe8112: 緩衝區資料讀入,且必為一完整訊息,當然前提是通訊時序 12/04 12:51
kobe8112: 符合你說的一問一答,也就是不會有「讀取執行緒正在睡覺 12/04 12:51
kobe8112: 時,機器端傳了2組以上訊息」的情況 12/04 12:52
askacis: read有檢查收到多少嗎?有時候硬體 fifo長度不夠會分好幾 12/18 01:15
askacis: 次送,你要自己組成你要的封包,再來就是 uart 速度,跟 12/18 01:15
askacis: xon xoff 等有設對嗎? 12/18 01:15
ZAXUS: 我後來換driver解決了...謝謝各位的建議 12/21 11:54
※ 編輯: ZAXUS (223.140.187.254 臺灣), 01/08/2021 10:41:01