安卓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: \n"
+ HexDump.dumpHexString(data) + "\n\n";
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: \n" + HexDump.dumpHexString(data)
+ "\n\n";
System.out.println(message);
}
}
}
}
};
高手见谅,权当是自己记录的一点心得,毕竟网上别人关于这方面资料少,具体的例子也没有。
安卓usb数据接收的更多相关文章
- stm32 usb数据接收与数据发送程序流程分析
http://blog.csdn.net/u011318735/article/details/17424349 既然学习了USB,那就必须的搞懂USB设备与USB主机数据是怎么通讯的.这里主要讲设备 ...
- 安卓 USB摄像头 开源库 UVCCamera 教程
https://github.com/saki4510t/UVCCamera UVCCamera 听名字就知道使用UVC( USB VEDIO CLASS) 协议的通用类库.linux原生支持,基本支 ...
- USB2.0协议学习笔记---USB数据包结构
USB包类型和传输过程 USB是一种串行总线,因此数据都是一位一位传输的,如同串口那样,但是USB在真实物理电路上却不是TTL电平,而是一种差分信号采用NRZI编码,就是用变化表示0,不变表示1,同 ...
- 如何用Wireshark捕获USB数据?
现在越来越多的电子设备采用USB接口进行通讯,通讯标准也在逐步提高.那么,我们就会好奇这些设备是如何工作的?而无论你是一个硬件黑客,业余爱好者或者只是对它有一点兴趣的,USB对我们都是具有挑战性的. ...
- 内核中用于数据接收的结构体struct msghdr(转)
内核中用于数据接收的结构体struct msghdr(转) 我们从一个实际的数据包发送的例子入手,来看看其发送的具体流程,以及过程中涉及到的相关数据结构.在我们的虚拟机上发送icmp回显请求包,pin ...
- 酷友观点/经验:支付接口返回数据接收地址,session数据丢失(或者说失效)的问题浅析(原创文章)
酷友观点/经验:支付接口返回数据接收地址,session数据丢失(或者说失效)的问题浅析(原创文章) 最近手头在开发一个游戏官网,在支付模块采用神州付技术支持,神州付数据表单中要求提供服务器返回地 ...
- 截取usb数据包,控制usb设备----Relay设备
在项目开发当中,我们需要一个usb转继电器的设备当开关控制无线发射设备,采购部采购时并未详细了解Relay设备的运行环境就买了一批设备,之后发现设备厂家只提供了windows库,而我们是要在linux ...
- Spark Streaming 数据接收过程
SparkStreaming 源码分析 一节中从源码角度,描述了Streaming执行时代码的调用过程.下边就接收转化阶段过程再简单分析一下,为分析backpressure作准备. SparkStre ...
- UDP数据接收服务器
简介 这是我在做一个要用UDP方式进行数据传输时,自己写的一个多线程的UDP数据接收服务器, 它能将接收到的UDP数据包存成文件,并提供数据包接收时间监测: 还支持键盘命令响应,以将数据写到新的文件, ...
随机推荐
- nmap 快速扫描所有端口
nmap -sT -sV -Pn -v xxx.xxx.xxx.xxx nmap -sS -p 1-65535 -v 192.168.1.254参数:-sS TCP SYN扫描 nmap ...
- Learning Python 012 函数式编程 2 返回函数 匿名函数 装饰器 偏函数
Python 函数式编程 2 返回函数 返回函数的意思就是:函数作为返回值.(高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回.) 举个例子:实现一个可变参数的求和. 正常的函数: de ...
- js中的cookie的设置获取和检查
设置cookiefunction setCookie(cname,cvalue,exdays) { var d = new Date(); d.setTime(d.getTime()+(exdays* ...
- 前端编码规范 -- css篇
合理的避免使用ID 一般情况下ID不应该被应用于样式. ID的样式不能被复用并且每个页面中你只能使用一次ID. 使用ID唯一有效的是确定网页或整个站点中的位置. 尽管如此,你应该始终考虑使用class ...
- VS code deploy同步服务器代码
首先在安装“deploy”插件 然后打开settings.json文件加上 { "deploy": { "packages": [ { "name&q ...
- 796D(bfs)
题目链接: http://codeforces.com/problemset/problem/796/D 题意: 给出一颗 n 个节点树, 树枝连接的两个定点距离为 1, 树中有 k 个特殊点, 问最 ...
- pb_ds的优先队列实现dijkstra
用pb_ds的优先队列来做dijkstra..据说noip能用哟. 先来篇关于仿函数的文章. 由于pb_ds支持由迭代器访问元素,并且push操作会返回一个迭代器,merge操作会更新迭代器,相当于帮 ...
- 手写堆的dijkstra
颓废.. #include <cstdio> #include <cstring> #include <algorithm> using namespace std ...
- CDN working principle diagram
转自 https://cloud.tencent.com/developer/article/1358553
- (四)从输入URL到页面加载发生了什么
一.从输入URL到页面加载发生了什么 1.在浏览器中输入URL 如:https://www.cnblogs.com/loveapple/ URL分成协议.地址.路径三部分 协议:http.https. ...