作者sweet00914 (別理我)
看板AndroidDev
標題Re: [問題] 藍芽傳送亂碼
時間Wed Feb 27 14:52:09 2013
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
1F:推 xezct1213:int i_value = readBuf [0] & 0xFF; 可正常顯示 02/27 15:18
2F:→ xezct1213:S大真的很感謝您,另外如何把傳出去的值轉成byte 02/27 15:20
你的意思-是從app送出指令至device嗎?0.0?
※ 編輯: sweet00914 來自: 59.105.214.165 (02/27 15:29)
3F:推 xezct1213:S大 如您所說的 是 app傳指令到device 02/27 15:36
5F:→ xezct1213:謝謝S大百忙抽空QQ... 02/27 15:37
6F:→ xezct1213:我這邊傳String 1 裝置收到的是49 02/27 15:38
假設要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)
7F:推 xezct1213:所以如果手機端要傳送49,out[0] = (byte) 0x4; 02/27 20:18
8F:→ xezct1213:out[1] = (byte) 0x9; 陣列是這樣設嗎? 02/27 20:19
9F:→ xezct1213:測試成功,要傳hex格式,對不起眼殘=.= 02/27 20:22
10F:推 xezct1213:那如果是ASCII碼可以直接轉byte嗎? 02/27 20:45
11F:→ xezct1213:直接把0x你妳 改成49即可,測試成功 02/27 21:18
12F:推 MetalChao:我有點看不懂, sweet 貼的兩段 code, 怎麼看我都覺得是 02/28 00:04
13F:→ MetalChao:單純在處理數值, 跟 ASCII hex 一點關係都沒有? 02/28 00:04