2 qq 28573001 qq_28573001 于 2016.04.02 01:03 提问

安卓读取串口数据时read阻塞,程序不能向下进行

用安卓 通过串口读取单片机发来的数据时,用inputstream.read()去读取数据时会发生阻塞,程序就卡在read()函数不能往下运行了,我是用的网上来源的serial_port_api,,,本人新手做项目卡在这了,求大神指导一下!!感谢

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
read\write 堵塞与非堵塞读取串口数据
read函数从打开的设备或文件中读取数据。 #include ssize_t read(int fd, void *buf, size_t count); 返回值:成功返回读取的字节数,出错返回-1并设置errno,如果在调read之前已到达文件末尾,则这次read返回0 参数count是请求读取的字节数,读上来的数据保存在缓冲区buf中,同时文件的当前读写位置向后移。注意这个读写位置
非阻塞读取串口终端数据
当进程调用一个阻塞的系统函数时,该进程被置于睡眠(Sleep)状态,这时内核调度其它进程运行,直到该进程等待的事件发生了它才有可能继续运行。与睡眠状态相对的是运行(Running)状态。打开终端使用O_NONBLOCK标志,可以实现非阻塞读取终端数据: #include #include #include #include #include int main(void) { cha
安卓 串口读取数据遇到的问题
安卓串口操作,在网上一定会找到很多关于谷歌的开源项目,把它的源码拿过来之后,经过编译发现无法读取数据。 接下来就是寻找收发数据失败原因的过程。 1、在Application中出现InvalidParameterException的异常,判断条件是 if ( (path.length() == 0) || (baudrate == -1)) 果断将path和baudrate的值写死,我
android 读取串口数据的服务,android串口
android 读取串口数据的服务,android串口 2016-09-1813:10:03 继承Service,定义抽象方法onDataReceived,子类通过实现抽象方法获取接收到数据的回调。 1 package com.zrsoft.liftad.serialport; 2 3 import java.io.File; 4 import java.io.IOEx
linux串口编程--规范模式和非规范模式及read的阻塞与非阻塞
1.阻塞与非阻塞1.1 阻塞的定义对于read,指当串口输入缓存区没有数据的时候,read函数将会阻塞在这里,直到串口输入缓存区中有数据可读取,read读到了需要的字节数之后,返回值为读到的字节数;对于write,指当串口输出缓冲区满,或剩下的空间小于将要写入的字节数,则write将阻塞,一直到串口输出缓冲区中剩下的空间大于等于将要写入的字节数,执行写入操作,返回写入的字节数。1.2 非阻塞的定义...
python 学习之读串口
Python中用于读串口的模块是 pySerial,使用非常的方便,可以从http://pypi.python.org/pypi/pyserial下载其安装包。 读取串口时首先导入包 import serial,其次设置读取哪一个口、波特率、数据位、停止位。 serial的原
好记性不如烂笔头(linux的串口超时read的参数意义)
在实际对串口设备操作时,一般都需要超时read,关于read的第三个参数意义总是忘记。 1:open /dev/ttySP0 获取fd 2:write(fd,***,)向fd写数据 3:fd返回响应数据,并使用select+read进行超时读取未知、不定长度的数据: read函数参数有三:int fd,char * p,int nbyte,前两个好理解,最后一个nb
Android串口(SerialPort)开发常遇神坑
在Android串口编程的时候,首先需要进行串口初始化,打开相应的串口。当我们初始化的时候显示java.lang.SecurityException,这时候可能是串口名称不正确,需要用Android 串口调试助手对相应的硬件进行调试,找到相应的正确串口。 当我们使用su = Runtime.getRuntime().exec(“/system/xbin/su”);方法获取系统权限的时候,可能抛出
串口阻塞读写的局限性
在阻塞读时,写串口需要不定长的时间(有时零点几秒,有时几秒),估计原因是串口的读和写不能同时进行。经跟踪测试,有以下结论:在某线程阻塞读串口时串口资源完全被占用,此时在另一线程中进行写操作也将阻塞(原因:使用同一资源,ReadFile/WriteFile在操作系统底层进行同步锁定),直到读操作因为超时返回,才能进行其它的串口操作,如串口写操作。
Android 使用非阻塞的方式读写串口
上一篇博客简单介绍了Android 串口使用demo,项目开发中由于app 同学要求 例如 getMcuversion() 返回值是 当前单片机版本号,由于我们串口是阻塞的 ,所以我们接收到串口返回值后,readthread 仍不会结束。所以传递当前read结果防是有两种,一种通过handler方式将read结果发给getMcuversion(){},但是我们无法预知何时能读到结果。另外一种就是...