馬上加入Android 台灣中文網,立即免費下載應用遊戲。
您需要 登錄 才可以下載或查看,沒有帳號?註冊
x
本帖最後由 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);
}
}; |