再问安卓蓝牙通讯的问题

2019-03-26 12:36发布

本帖最后由 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与安卓论坛
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
chenbingjy
2019-03-27 04:30
新的线程程序如下:
Thread MyThread=new Thread(){                       
               
               
       
               
                @Override
                public void run() {
                        runOnUiThread(new Runnable() {
                               
                               
                                @Override
                                public void run() {
                               
                                       
                                                while(true)
                                                {
                                                        try{
                                                               
                                                       
                                                       
                                                                Thread.sleep(100);
                                                        }catch(Exception e){
                                                                e.printStackTrace();
                                                        }
                                                        if(Readflag==true){
                                                                String s4 = Integer.toHexString(ccb);
                                                                        dis.setText(s4);
                                                                        ccb++;
                                                                        Readflag=false;
                                                                       
                                                                }
                                                }
                                }
                        });
                }
                 
               
        };
我的意图是每发送一次数据,Readflag=true,执行上面这个线程,显示一次ccb的值。
然后ccb加1.Readflag=flase.同时线程休眠100ms。

一周热门 更多>