penge666 2016-05-28 13:22 采纳率: 0%
浏览 2822
已结题

android蓝牙实时接收数据接收一次后就不循环了为什么?

单片机0.5秒通过蓝牙发一次数据过来,android开启一个线程进行接收,线程里面是循环接收的,现在接收一次之后就不再接收了,循环也不起作用,这是为什么?部分程序如下
//存储文件并显示的线程
private class saveimageThread extends Thread {

    public saveimageThread(BluetoothSocket btSocket) {
        while(saveflag==0)
        {
            InputStream tmpIn =null;
            inStream=null;

            try {
                tmpIn=btSocket.getInputStream();
            } catch (IOException e) {
                Log.e(TAG,"temp scoket not created",e);
            }
            inStream=tmpIn;
            saveflag=1;
        }

    }
    @Override
    public void run() {
        while(D) {
        int picname=1;
        Log.i("saveimage","start");
        try{                
            byte[] buffer=new byte[1024];
            //dri为保存路径,SD卡中的carImage文件夹
            //从蓝牙获取输入流              
            while (inStream!=null) 
            {
                Log.e("","InputStream");
                int l = -1;
                try{
                while((l = inStream.read(buffer)) != -1)
                //l = inStream.read(buffer);    
                {
                ByteArrayOutputStream outStream=new ByteArrayOutputStream();
                outStream.write(buffer,0,buffer.length);
                //inStream.close();
                byte[] data = outStream.toByteArray();
                Log.e("","data is ready!");
               略
                }   //while((l = inStream.read(buffer)) != -1)
                }catch (Exception e){
                    e.printStackTrace();}
                //byte[] data=new byte[j-3];
                //out.write(buffer,0,buffer.length);
                //buffer=null;   
                break;
                }   //while (inStream!=null)

            } catch (Exception e){
                e.printStackTrace();
                System.err.println("Can't start");
        }
         try {
            sleep(10);
        } catch (InterruptedException e) { 
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        }   //while(D)  
}
}
  • 写回答

1条回答 默认 最新

  • HeroKern 博客专家认证 2016-05-28 15:01
    关注

    重新打开接收标志位,接收到数据标志位会被置位

    评论

报告相同问题?

悬赏问题

  • ¥15 chaquopy python 安卓
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题