綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] [已解]手機經藍芽模組接收從嵌入式裝置(MSP430)發送的資

[複製連結] 查看: 2997|回覆: 2|好評: 0
跳轉到指定樓層
樓主
kansas73 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2013-9-23 12:34

馬上加入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);
            }
     };
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
A130612p417 | 收聽TA | 只看該作者
發表於 2013-10-2 08:51
網路搜尋到的,看看有沒有幫助

String hex = "FA";
int intValue = Integer.parseInt(hex, 16);

評分

參與人數 1幫助 +1 收起 理由
kansas73 + 1

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

板凳
 樓主| kansas73 | 收聽TA | 只看該作者
發表於 2013-10-3 23:30


謝謝大大的回覆
我知道如果你自己鍵入一個16進制的字串
想要轉換就如同您所建議的這樣非常簡單
不過如果想我是需要從藍芽去接收資料再轉乘10進制就不簡單囉
但我還是有打出來
我把資料丟進一個陣列然後再和0xff去&
再來用Integer.toString 顯示出來就OK囉!!!!!
謝謝A130612p417的解答希望可以幫到其他有需要的人
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則