馬上加入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);
}
}; |

|