Android 台灣中文網
標題:
[已解]手機經藍芽模組接收從嵌入式裝置(MSP430)發送的資
[打印本頁]
作者:
kansas73
時間:
2013-9-23 12:34
標題:
[已解]手機經藍芽模組接收從嵌入式裝置(MSP430)發送的資
本帖最後由 kansas73 於 2013-10-7 21:25 編輯
我還是個學生,目前正在開發android的程式
我們的專題需要使用手機APP連接藍芽模組,去接收寫在MSP430裏頭的資料
目前已經寫出大概的雛型,當然也是從網路上模仿出來的
參考網站:
其實這篇文章把藍芽如何開關、搜尋、連接、傳送、接收都寫得很完整,
目前我的進度是已經成功地接收到藍芽傳出來的資料了
傳送資料:110V(ASCII)手機顯示110V(ASCII),這當初只是要測試能否正接收資料所寫的一個簡單的測試程式而已
而我們真正要的功能是要寫在MSP430裏頭但資料都是16進制的,ex.0x31 ox32 0x2e......etc
現在我困惑的是要怎麼樣才能把16進制資料轉換成我在手機上可以顯示出,ex.116.2(我們要測電壓)
也就是把0x310x310x360x2e0x32轉換成在手機上可以顯示出116.2
msg= new String(data,0,length, "ASCII")+"
";
上面這個code是我參考的文章裏頭版主將收到的資訊轉成ASCII
手機是不是只能顯示出ASCII呢?
現在我要把16進制轉換成ASCII要怎麼寫呢?
完成程式碼如下
private class SppReceiver extends Thread{
private InputStream input=null;
public SppReceiver(InputStream in){
input = in;
Log.i(tag, "SppReceiver");
}
/*接收SPP訊息...*/
public void run(){
int length=0;
byte[] data = new byte[1024];
if (input == null){
Log.d(tag, "InputStream null");
return;
}
//================SLEEP指令↓===================
while (true){
try{
Thread.sleep(820);
length=input.read(data);
Log.i(tag, "SPP receiver");
if (length>0){
//Log.i(tag,"R: "+ new String(data,0,length, "ASCII"));
msg= new String(data,0,length, "ASCII")+"
";
btHandler.sendEmptyMessage(0);
}
}catch (Exception e){//IOException e
Log.e(tag, "SppReceiver_disconnect");
disconnect();
}
}
//================SLEEP指令↑================
}
}
/*將訊息顯示再Textview中畫面*/
Handler btHandler = new Handler(){
public void handleMessage(Message m){
msgVolText.setText(msg);
}
};
作者:
A130612p417
時間:
2013-10-2 08:51
網路搜尋到的,看看有沒有幫助
String hex = "FA";
int intValue = Integer.parseInt(hex, 16);
作者:
kansas73
時間:
2013-10-3 23:30
A130612p417 發表於 2013-10-2 08:51
登錄/註冊後可看大圖
網路搜尋到的,看看有沒有幫助
String hex = "FA";
謝謝大大的回覆
我知道如果你自己鍵入一個16進制的字串
想要轉換就如同您所建議的這樣非常簡單
不過如果想我是需要從藍芽去接收資料再轉乘10進制就不簡單囉
但我還是有打出來
我把資料丟進一個陣列然後再和0xff去&
再來用Integer.toString 顯示出來就OK囉!!!!!
謝謝A130612p417的解答希望可以幫到其他有需要的人
歡迎光臨 Android 台灣中文網 (https://apk.tw/)
Powered by Discuz! X3.1