推 xezct1213:感謝Y大回覆,造福我這種菜逼八的新手QQ 02/24 23:35
推 MetalChao:沒錯, 基本上原原PO的code裡的邏輯可以大幅縮小成Y大寫 02/25 18:54
→ MetalChao:的這樣, 不過個人覺得跑起來應該會不太一樣 02/25 18:55
→ MetalChao:第一點是原原PO的邏輯是,如果是252~255是指定接下來要放 02/25 18:56
→ MetalChao:在哪裡, 然後後面的(非252~255)才是要放進的內容 02/25 18:56
→ MetalChao:例外: 連續兩個相同的 252~255 的值, 則會被當成資料 02/25 18:57
→ MetalChao:但Y大的code裡面 old_IdCheng == IdCheng 02/25 18:59
→ MetalChao:變成只有連續兩個值相同, 才會放進去; 而且有些是資料不 02/25 19:00
→ MetalChao:是 IdCheng, 也要先判斷, 不能直接減 02/25 19:00
→ MetalChao:第二點就是最後要放的 view 應該要根據 IdCheng 決定 02/25 19:01
→ MetalChao:(R.id.view_id1 ~ view_id4) 02/25 19:01
→ MetalChao:另外建議原PO 把 findViewById() 移出這個 loop/event 02/25 19:02
→ MetalChao:事先就把 四個 view 準備好, 不然每一個 byte 來就要做 02/25 19:02
→ MetalChao:一次 findViewbyId(), 效能會很差 02/25 19:03
→ MetalChao:另外要問原原PO進來的資料是 byte values 還是字串? 02/25 19:03
→ MetalChao:看應用很像是 byte values, 可是原原PO的code是把它當成 02/25 19:04
→ MetalChao:字串來轉換, 建議確定一下, 如果真是字串就當我沒說 02/25 19:04
推 xezct1213:感謝M大的指點,我的描述能力太差讓Y大誤解邏輯真是抱歉 02/25 21:49
→ xezct1213:這是我目前修正的程式碼,結合Y大與M大的建議 02/25 21:50
→ xezct1213:我是直接使用藍牙聊天室範本修改,進來的資料是 02/25 21:54
→ xezct1213:Arduino丟進來的byte數值 02/25 21:55
→ xezct1213:所以說 轉換上建議用byte直接轉換嗎? 02/25 21:56
推 MetalChao:藍牙Andruino這部份我沒概念, 你所列出的code是訊息接收 02/25 22:25
→ MetalChao:端, 那麼重點是要看傳訊息的另一端是如何安排資料的; 02/25 22:25
→ MetalChao:假設傳訊息的一端要送一個byte 0xFF (255), 那麼它是 02/25 22:25
→ MetalChao:如何傳給你呢? 02/25 22:25
→ MetalChao:1. 把 0xFF(255), 轉成十進位的 byte array (中間可能還 02/25 22:26
→ MetalChao: 先轉成string), 變成 byte[] a = { 2, 5, 5 }; 02/25 22:26
→ MetalChao: 再轉型成 msg.obj 送過來? (看你的 code 很像是這樣 02/25 22:26
→ MetalChao: 雖然我覺得有點怪, 而且沒效率) 02/25 22:26
→ MetalChao:2. 傳送端直接把幾個 bytes (如 255, 3, 8) 放進 byte 02/25 22:26
→ MetalChao: 陣列, 變成 byte[] a = { 255, 3, 8 }; 再轉成 02/25 22:26
→ MetalChao:msg.obj 送過來 (個人覺得比較合理); 所以你收到的 02/25 22:27
→ MetalChao:readBuf[] 其實是三個數字(bytes), 而不是表示一個 02/25 22:27
→ MetalChao: byte 的字串, 但如果真是這樣子, 你現在的 code 就會 02/25 22:28
→ MetalChao: 有問題. 02/25 22:28
→ MetalChao:這部份可能你要先確定(傳送端放在 msg.obj 的資料格式) 02/25 22:28
→ MetalChao:(或是上面是1.還是2.), 才有辦法回答你 02/25 22:28
推 xezct1213:M大您好,不好意思最近才測試才有辦法回覆 02/27 07:12
→ xezct1213:目前確定Arduino那邊是您說的第二種方式 02/27 07:13
→ xezct1213:我現在遇到的問題是手機收到的值為ACSII碼 02/27 07:13
→ xezct1213:請問我該怎麼使其轉成 byte原始傳來的值? 02/27 07:14