首页 > 其他 > 详细

蓝牙通信中读取固定长度数组的解决

时间:2014-05-07 19:05:50      阅读:558      评论:0      收藏:0      [点我收藏+]

2014-05-05 18:10 今天主要忙于工作。之前遇到一个问题,今天得以解决。

问题的描叙:需要从输入流中读取固定长度的字节数组。

 

 

问题的解决:今天参考了网上的资料。解决了。

 

注释部分:之前是通过拷贝数组进行解决,但是难以解决。

 

解决的代码如下:

bubuko.com,布布扣
public synchronized void run() {
            byte[] buffer = new byte[16];
            int bytes = 0;
            
            
            while (mmInStream != null) {
                try {
                    
                    
                     
                    // 通过连接的端口获得输入数据流
                    while(bytes <16){
                        
                    
                    bytes += mmInStream.read(buffer,bytes,16-bytes);
                    
                    }
                    
                    
                    
                    mHandler.obtainMessage(MainActivity.MESSAGE_READ, 16, -1,
                            buffer).sendToTarget();
                    
                    bytes =0;
                    
                    
                    
                    
                } catch (IOException e) {
                    connectionLost();
                    BluetoothChatService.this.start();
                    break;
                }
                
                //System.arraycopy(buffer, 0, buffer_new, old, bytes);
                
                //old = bytes;
                
                //allBytes += bytes;
                
                
                //System.out.println("------>读取到的数量为:"+bytes);
                //System.out.println("----->读取的总字符为:"+allBytes);
                
                //System.out.println("---->当前拷贝后的数组第一个元素为:"+buffer_new[0]);
                
                //讲读取的元素,拷贝到新的数组。命令是以16为结尾的。
                //因此必须读取的数组,最后一个命令为 16 才停止拷贝
                //不能读一次,发送一次。经测试,一次操作,会发送3次消息
                /*
                if(buffer_new[allBytes-1] ==22 ){
                    System.out.println("满足发送消息的条件");
                    System.out.println("当前发现ox16 = "+buffer_new[allBytes-1]);
                    
                    
                    //命令结束后发送
                    mHandler.obtainMessage(MainActivity.MESSAGE_READ, allBytes, -1,
                            buffer_new).sendToTarget();
                    
                    Arrays.fill(buffer_new, (byte) 0); //重置数组
                    allBytes = 0;
                    old = 0;
                    bytes = 0;
                    
                    System.out.println("---->发送Ok 了");
                    
                    
                    
                }*/
                    
                    
                                
                
                
                
                
            }
            
            
            
            
            
            
        }
读取固定长度数组

 

核心的代码是:

bubuko.com,布布扣
while(bytes <16){
                        
                    
                    bytes += mmInStream.read(buffer,bytes,16-bytes);
                    
                    }
核心部分

 

 

 

蓝牙通信中读取固定长度数组的解决,布布扣,bubuko.com

蓝牙通信中读取固定长度数组的解决

原文:http://www.cnblogs.com/jsRunner/p/3709800.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!