Re: [問題] 藍芽傳送亂碼

看板AndroidDev作者 (別理我)時間11年前 (2013/02/27 14:52), 編輯推噓5(508)
留言13則, 2人參與, 最新討論串2/2 (看更多)
To stanleychao, xezct1213兩位大大, 假設 從 device 丟出來的東西長度為 5個byte之ASCII hex, 而你欲取得數值是5個byte中的第二個byte 我會這麼做 int i_value = readBuf [1] & 0xFF; // if readBuf.Length=5, 將 ASCII之hex 轉整數 String s_value = String.valueOf(i_value);//整數在轉換成字串格式 ※ 引述《stanleychao ()》之銘言: : 大家好 小弟我最近在用android的藍芽傳送的東西 : 我使用血氧濃度計使用藍芽傳送到我寫的android app : 最後把圖畫出來 : 我使用是bluetoothchat的範例去改 : 其中我讀值的一段是 : byte[] readBuf = (byte[]) msg.obj; : String readMessage = new String(readBuf,0,msg.arg1); : valueBuffer = readMessage; : log.v(TAG,"read data:" + valueBuffer); : 最後valueBuffer觀察的結果都是一些亂碼 : 我在想這是什麼問題? : 可以請各位幫我嗎 : 超級感謝的 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.105.214.165

02/27 15:18, , 1F
int i_value = readBuf [0] & 0xFF; 可正常顯示
02/27 15:18, 1F

02/27 15:20, , 2F
S大真的很感謝您,另外如何把傳出去的值轉成byte
02/27 15:20, 2F
你的意思-是從app送出指令至device嗎?0.0? ※ 編輯: sweet00914 來自: 59.105.214.165 (02/27 15:29)

02/27 15:36, , 3F
S大 如您所說的 是 app傳指令到device
02/27 15:36, 3F

02/27 15:37, , 4F
http://pastebin.com/Zxj1d9s6 這是我傳值部分的code
02/27 15:37, 4F

02/27 15:37, , 5F
謝謝S大百忙抽空QQ...
02/27 15:37, 5F

02/27 15:38, , 6F
我這邊傳String 1 裝置收到的是49
02/27 15:38, 6F
假設要send的byet 長度一樣為5,且送出指令的格式為hex byte[] out = new byte[5]; out[0] = (byte) 0x你你; out[1] = (byte) 0x我我; ... ... out[4] = (byte) 0x它它; 最後mmOutputStream.write(out); ※ 編輯: sweet00914 來自: 59.105.214.165 (02/27 15:43)

02/27 20:18, , 7F
所以如果手機端要傳送49,out[0] = (byte) 0x4;
02/27 20:18, 7F

02/27 20:19, , 8F
out[1] = (byte) 0x9; 陣列是這樣設嗎?
02/27 20:19, 8F

02/27 20:22, , 9F
測試成功,要傳hex格式,對不起眼殘=.=
02/27 20:22, 9F

02/27 20:45, , 10F
那如果是ASCII碼可以直接轉byte嗎?
02/27 20:45, 10F

02/27 21:18, , 11F
直接把0x你妳 改成49即可,測試成功
02/27 21:18, 11F

02/28 00:04, , 12F
我有點看不懂, sweet 貼的兩段 code, 怎麼看我都覺得是
02/28 00:04, 12F

02/28 00:04, , 13F
單純在處理數值, 跟 ASCII hex 一點關係都沒有?
02/28 00:04, 13F
文章代碼(AID): #1HBQqSi0 (AndroidDev)
討論串 (同標題文章)
文章代碼(AID): #1HBQqSi0 (AndroidDev)