博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java串口通信 鸿洋_android JAVA串口读写available和read函数配合异常
阅读量:4356 次
发布时间:2019-06-07

本文共 747 字,大约阅读时间需要 2 分钟。

问题:项目需要在android面板上开发485串口通信,读的命令发送后需要监听串口,N时间后未收到认为通信失败。使用java的FutureTask配合FileInputStream的available以及read去读响应。但是测试发现available返回num后去read,读到的内容为0,感觉像是available把数据读走了。如果直接使用read阻塞读,可以读到响应。available又看不到源码,肯困惑,也没有头绪。

代码: boolean done = TimeoutUtil.execute(new Runnable() {

@Override

public void run() {

try {

byte[] bytes = new byte[30];

for(int i=0;i<30;i++){

bytes[i] = (byte)i;

}

while (!complete[0]) {

int num;

if ((num = input.available()) > 0) {

int len = input.read(bytes, 0, num);

if (len > 0) {

response.write(bytes, 0, len);

if (response.size() >= finalExpected_length) {

break;

}

}

}

ThreadUtil.sleep(1);

}

} catch (Exception ex) {

ex.printStackTrace();

}

}

}, timeout);

TimeoutUtil是封装的FutureTask,打断点发现available返回7后,read读出来的确全部是0,read也没阻塞。

转载地址:http://dmxys.baihongyu.com/

你可能感兴趣的文章
Linux学习-Linux历史(总结篇)
查看>>
c++笔记
查看>>
NoSql笔记
查看>>
chromium os系统编译与环境搭建
查看>>
给元素绑定 class
查看>>
如何对iPhone进行屏幕录像
查看>>
网站技术架构
查看>>
maven 配置阿里云仓库
查看>>
合理构建产品形态(一)——谁是目标用户
查看>>
Tomcat服务器与HTTP协议
查看>>
Android studio开发APP的的目录结构
查看>>
VS 2010 Beta2中WPF有哪些改进?
查看>>
一个野生程序员开博日
查看>>
20180528小测
查看>>
spring和spring mvc的配置文件
查看>>
VSS+SourceAnywhere for VSS搭建版本控制系统教程
查看>>
TCP : two different sockets sharing a port?
查看>>
unix系统编程小结(二)------文件和目录
查看>>
ubuntu 创建用户
查看>>
Summary: gcd最大公约数、lcm最小公倍数算法
查看>>