[問題] 使用pl2303 driver開發uart應用

看板AndroidDev作者時間4年前 (2020/12/03 15:34), 4年前編輯推噓1(1013)
留言14則, 3人參與, 4年前最新討論串1/1
!!!以上為暫存檔內容 以下為目前文章內容 請自行合併!!! 作者: 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

12/03 18:24, 4年前 , 1F
你收送是恆定大小或不定大小?為啥需要在這裏面睡覺
12/03 18:24, 1F

12/03 20:16, 4年前 , 2F
不定大小,不睡的情況也一樣耶
12/03 20:16, 2F

12/04 12:46, 4年前 , 3F
我是指你睡的時機我覺得奇怪,
12/04 12:46, 3F

12/04 12:47, 4年前 , 4F
我自己寫是通訊分指令跟資料封包,指令恆定大小,
12/04 12:47, 4F

12/04 12:48, 4年前 , 5F
資料不定大小,因此可藉由前一項指令知道接下來要收多少
12/04 12:48, 5F

12/04 12:49, 4年前 , 6F
你如果是永遠不定大小,但至少每一次的最大傳輸時間可以
12/04 12:49, 6F

12/04 12:50, 4年前 , 7F
估計吧? 應該是讀取執行緒固定睡這個時間,醒來時將所有
12/04 12:50, 7F

12/04 12:51, 4年前 , 8F
緩衝區資料讀入,且必為一完整訊息,當然前提是通訊時序
12/04 12:51, 8F

12/04 12:51, 4年前 , 9F
符合你說的一問一答,也就是不會有「讀取執行緒正在睡覺
12/04 12:51, 9F

12/04 12:52, 4年前 , 10F
時,機器端傳了2組以上訊息」的情況
12/04 12:52, 10F

12/18 01:15, 4年前 , 11F
read有檢查收到多少嗎?有時候硬體 fifo長度不夠會分好幾
12/18 01:15, 11F

12/18 01:15, 4年前 , 12F
次送,你要自己組成你要的封包,再來就是 uart 速度,跟
12/18 01:15, 12F

12/18 01:15, 4年前 , 13F
xon xoff 等有設對嗎?
12/18 01:15, 13F

12/21 11:54, 4年前 , 14F
我後來換driver解決了...謝謝各位的建議
12/21 11:54, 14F
※ 編輯: ZAXUS (223.140.187.254 臺灣), 01/08/2021 10:41:01
文章代碼(AID): #1Vo9K26e (AndroidDev)
文章代碼(AID): #1Vo9K26e (AndroidDev)