本帖最后由 chenbingjy 于 2015-10-16 15:23 编辑
我在搞安卓蓝牙通讯,用手机和单片机板子上的蓝牙通讯。
手机给板子上的蓝牙模块发数据,蓝牙模块收到数据再回复给手机。
手机收到数据再显示。可是领导要求显示16进制,比如AA AA AA 96 30 EF 20 DB ....
可是显示的是ASCII字符。安卓手机接收数据程序如下:
//接收数据线程
Thread ReadThread=new Thread(){
public void run(){
int num = 0;
byte[] buffer = new byte[1024];
byte[] buffer_new = new byte[1024];
int i = 0;
int n = 0;
bRun = true;
//接收线程
while(true){
try{
while(is.available()==0){
while(bRun == false){}
}
while(true){
num = is.read(buffer); //读入数据
n=0;
String s0 = new String(buffer,0,num);
fmsg+=s0; //保存收到数据
for(i=0;i<num;i++){
if((buffer
== 0x0d)&&(buffer[i+1]==0x0a)){
buffer_new[n] = 0x0a;
i++;
}else{
buffer_new[n] = buffer;
}
n++;
}
String s = new String(buffer_new,0,n);
smsg+=s; //写入接收缓存
break; //短时间没有数据才跳出进行显示
}
//发送显示消息,进行显示刷新
handler.sendMessage(handler.obtainMessage());
}catch(IOException e){
}
}
}
};
此帖出自
Linux与安卓论坛
请问高手,为什么会这样,应该怎么修改?谢谢!
一周热门 更多>