安卓usb数据接收
2024-09-29 16:43:45
之前在论坛里面求助了关于监听数据接收的问题,因为第一次做这方面,可能我提的问题太简单了,大神都不愿意回答我,(之前的帖子)晚上翻墙浏览网站发现问题的解决办法,
原文是:最近老板让弄安卓和一块板子通信,现在的情况是我第一次发送数据可以接受到(一些参数的初始化),然后我再发送数据,就接收不到了,数据肯定是发送成功了,只是我的逻辑代码有问题(新手,懂的较少),因为我退出了然后再进入程序数据就接收到了,不知道如何实现线程内的代码一直处于监听状态,我的代码:
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);
}
} } }
};
高手见谅,权当是自己记录的一点心得,毕竟网上别人关于这方面资料少,具体的例子也没有。
最新文章
- SVN部署和使用
- redis教程(整理中)
- js-Event构造函数,也许你需要
- java数据结构
- 转:socket通信简介
- OpenStack最新版本Folsom架构解析
- C++编程练习(15)----“排序算法 之 归并排序“
- solr home 目录设置
- [原创]Jquery实现表格内容点击隐藏显示内容
- php的过滤器功能
- 推荐一个利用 python 生成 pptx 分析报告的工具包:reportgen
- 873D. Merge Sort
- redis 慢日志查询
- java进阶系列之装饰器模式
- nginx 拦截 swagger 登录
- Spring Boot参数校验
- Swift 与 C 语言混合编程
- 【ElasticSearch】ElasticSearch-索引优化-自定义索引
- Git 忽略.idea/workspace.xml文件
- 非常有用的15个Linux 服务器监控命令