zoukankan      html  css  js  c++  java
  • 安卓usb数据接收

    之前在论坛里面求助了关于监听数据接收的问题,因为第一次做这方面,可能我提的问题太简单了,大神都不愿意回答我,(之前的帖子)晚上翻墙浏览网站发现问题的解决办法,

    原文是:最近老板让弄安卓和一块板子通信,现在的情况是我第一次发送数据可以接受到(一些参数的初始化),然后我再发送数据,就接收不到了,数据肯定是发送成功了,只是我的逻辑代码有问题(新手,懂的较少),因为我退出了然后再进入程序数据就接收到了,不知道如何实现线程内的代码一直处于监听状态,我的代码:

    Runnable runnable = new Runnable() {
     
            @Override
            public void run() {
                // TODO Auto-generated method stub
                UsbRequest request = new UsbRequest();
                boolean initilzed = request.initialize(conn, endpointIn);
                System.out.println(initilzed);
                ByteBuffer buffer = ByteBuffer.allocate(38);
                request.queue(buffer, 38);
                while (initilzed) {
                    if (conn.requestWait().equals(request)) {
                        byte[] data = buffer.array();
                        conn.bulkTransfer(endpointIn, data, 38, 1000);
                        // System.out.println(data.toString());
                        final String message = "Read " + data.length + " bytes: 
    "
                                + HexDump.dumpHexString(data) + "
    
    ";
                        System.out.println(message);
                    }
                }
            }
        };
    现在说下解决办法:其实很简单,就是loop循环里面执行异步任务:

    	Runnable runnable = new Runnable() {
    
    		@Override
    		public void run() {
    			// TODO Auto-generated method stub
    			// System.out.println("进入线程了");
    			while (true) {
    				synchronized (this) {
    					UsbRequest request = new UsbRequest();
    					request.initialize(conn, endpointIn);
    					ByteBuffer buffer = ByteBuffer.allocate(38);
    					request.queue(buffer, 38);
    					if (conn.requestWait().equals(request)) {
    						byte[] data = buffer.array();
    						conn.bulkTransfer(endpointIn, data, 38, 1000);
    						final String message = "Read " + data.length
    								+ " bytes: 
    " + HexDump.dumpHexString(data)
    								+ "
    
    ";
    						System.out.println(message);
    					}
    				}
    
    			}
    
    		}
    	};
    高手见谅,权当是自己记录的一点心得,毕竟网上别人关于这方面资料少,具体的例子也没有。




  • 相关阅读:
    设置ios中imageView图片自适应,
    IOS应用之间调用
    XCode debug中添加查找debug和控制台的办法
    初学Java scirpt(判断、循环语句)
    Java Script 字符串操作
    初学 Java Script (算数运算及逻辑术语)
    Ubuntu 配置JDK
    SQL Server 跨库复制表方法小笔记
    Ubuntu 重装 mysql
    Java Script 数组操作
  • 原文地址:https://www.cnblogs.com/sowhat4999/p/4439864.html
Copyright © 2011-2022 走看看