綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] 將接收到的資料放入陣列卻會遺失

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

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
本帖最後由 kansas73 於 2013-10-7 21:14 編輯

手機接收藍芽送出來的資料
然後將之一一放進陣列
按下按鈕後開始讀取
然後顯示在各自的textview
結果發生悲劇
data[0]的資料是64
data[1]的資料是02
data[2]=00
data[3]=2B
.
.
.
可是當一按下去textview1的確會短暫顯示出64
結果下一秒就會被覆寫成02
然後後面的陣列就會全部往前移
變成data[0]=02、data[1]=00、data[2]=2B...全部往前
之後我在按下讀取資料的按紐
textview1就會先顯示出64然後馬上會跳回顯示02
可是其他的陣列就會全部往前不變了data[1]就會變成data[2]的資料
data[2]就會變成data[3]的資料
求解謝謝 拜託各位大大
已經研究了好幾天找不出問題
====CODE如下======
private class SppReceiver extends Thread{           
             private InputStream input=null;
   
             public SppReceiver(InputStream in){
                     input = in;
                     Log.i(tag, "SppReceiver");
             }
             /* 接收SPP訊息...*/
             public void run(){                    
                     byte[] data  = new byte[1024];
                     int length;  
                     short tmp[] = new short [20];
                     double vo;
                     if (input == null){
                             Log.d(tag, "InputStream null");
                             return;
                     }
                     while (true){
                             try{                 
                                     Thread.sleep(500);
                                     length=input.read(data);                                   
                                     tmp[0]=(short) (0xff & data[0]);
                                     tmp[1]=(short) (0xff & data[1]);
                                     tmp[2]=(short) (0xff & data[2]);
                                     tmp[3]=(short) (0xff & data[3]);
                                     tmp[4]=(short) (0xff & data[4]);
                                     tmp[5]=(short) (0xff & data[5]);
                                     tmp[6]=(short) (0xff & data[6]);
                                     tmp[7]=(short) (0xff & data[7]);
                                     tmp[8]=(short) (0xff & data[8]);
                                     tmp[9]=(short) (0xff & data[9]);
                                     tmp[10]=(short) (0xff & data[10]);
                                     tmp[11]=(short) (0xff & data[11]);
                                     tmp[12]=(short) (0xff & data[12]);
                                     vo =0.01*( (tmp[7]*256) + tmp[8] );
                                     Log.i(tag, "SPP receiver");
                                     if (length>0){
                                             //Log.i(tag,"R: "+ new String(data,0,length, "ASCII")+"
");                                         
                                             msg=Double.toString(vo);
                                             msg1=Integer.toString(tmp[0],0);
                                             msg2=Integer.toString(tmp[1]);
                                             msg3=Integer.toString(tmp[2]);
                                             msg4=Integer.toString(tmp[7]);
                                             msg5=Integer.toString(tmp[8]);
                                             msgetr=Integer.toHexString(data[0]);
                                             btHandler.sendEmptyMessage(0);//將所有要顯示的訊息都丟去btHandler
                                     }
                             }catch (Exception e){//IOException e
                                     Log.e(tag, "SppReceiver_disconnect");
                                     disconnect();                                 
                             }
                     }             
                     }
     }
     /*將訊息顯示再Textview中畫面*/
     Handler btHandler = new Handler(){
            public void handleMessage(Message m){
                    msg.length();
                    msgVolText.setText(msg+"v");
                    msgCurText.setText(msg1);
                    msgFreText.setText(msg2);
                    msgPFText.setText(msg3);
                    msgAcPText.setText(msg4);
                    msgApPText.setText(msg5);
                    msgETR.setText(msgetr);
            }
     };
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
xjxuvup | 收聽TA | 只看該作者
發表於 2013-10-6 23:27
code貼出來大家幫你查
都沒code也看不出個所以然吧
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

板凳
 樓主| kansas73 | 收聽TA | 只看該作者
發表於 2013-10-7 21:12
to xjxuvup
不好意思忘記貼上code馬上補上謝謝您
private class SppReceiver extends Thread{           
             private InputStream input=null;
   
             public SppReceiver(InputStream in){
                     input = in;
                     Log.i(tag, "SppReceiver");
             }
             /* 接收SPP訊息...*/
             public void run(){                    
                     byte[] data  = new byte[1024];
                     int length;  
                     short tmp[] = new short [20];
                     double vo;
                     if (input == null){
                             Log.d(tag, "InputStream null");
                             return;
                     }
                     while (true){
                             try{                 
                                     Thread.sleep(500);
                                     length=input.read(data);                                   
                                     tmp[0]=(short) (0xff & data[0]);
                                     tmp[1]=(short) (0xff & data[1]);
                                     tmp[2]=(short) (0xff & data[2]);
                                     tmp[3]=(short) (0xff & data[3]);
                                     tmp[4]=(short) (0xff & data[4]);
                                     tmp[5]=(short) (0xff & data[5]);
                                     tmp[6]=(short) (0xff & data[6]);
                                     tmp[7]=(short) (0xff & data[7]);
                                     tmp[8]=(short) (0xff & data[8]);
                                     tmp[9]=(short) (0xff & data[9]);
                                     tmp[10]=(short) (0xff & data[10]);
                                     tmp[11]=(short) (0xff & data[11]);
                                     tmp[12]=(short) (0xff & data[12]);
                                     vo =0.01*( (tmp[7]*256) + tmp[8] );
                                     Log.i(tag, "SPP receiver");
                                     if (length>0){
                                             //Log.i(tag,"R: "+ new String(data,0,length, "ASCII")+"
");                                         
                                             msg=Double.toString(vo);
                                             msg1=Integer.toString(tmp[0],0);
                                             msg2=Integer.toString(tmp[1]);
                                             msg3=Integer.toString(tmp[2]);
                                             msg4=Integer.toString(tmp[7]);
                                             msg5=Integer.toString(tmp[8]);
                                             msgetr=Integer.toHexString(data[0]);
                                             btHandler.sendEmptyMessage(0);//將所有要顯示的訊息都丟去btHandler
                                     }
                             }catch (Exception e){//IOException e
                                     Log.e(tag, "SppReceiver_disconnect");
                                     disconnect();                                 
                             }
                     }             
                     }
     }
     /*將訊息顯示再Textview中畫面*/
     Handler btHandler = new Handler(){
            public void handleMessage(Message m){
                    msg.length();
                    msgVolText.setText(msg+"v");
                    msgCurText.setText(msg1);
                    msgFreText.setText(msg2);
                    msgPFText.setText(msg3);
                    msgAcPText.setText(msg4);
                    msgApPText.setText(msg5);
                    msgETR.setText(msgetr);
            }
     };
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

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

本版積分規則