社区
Android
帖子详情
安卓读取串口数据出现堵塞
as1_2
2016-08-08 11:05:03
安卓app刚开始读取串口的数据是没有问题的,过了一段时间,发现界面数据不更新,点击界面提示无响应,串口一直在高频发送数据,但是app一直接收不了,好像被堵塞了?各位大虾,有没遇到过同样的问题?
...全文
612
7
打赏
收藏
安卓读取串口数据出现堵塞
安卓app刚开始读取串口的数据是没有问题的,过了一段时间,发现界面数据不更新,点击界面提示无响应,串口一直在高频发送数据,但是app一直接收不了,好像被堵塞了?各位大虾,有没遇到过同样的问题?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
玉怀一捧雪
2016-08-09
打赏
举报
回复
你问错版块了,去安卓开发的版块去问问题把。最好贴上源码
dingshi0375
2016-08-09
打赏
举报
回复
你好能交流下吗,我现在做了一个安卓app实现视频监控,另外从wifi模块串口读取数据这一块有问题,能留下联系QQ交流吗?或者加我QQ249634096
as1_2
2016-08-09
打赏
举报
回复
其中 byte[] SCI_DSP = new byte[8000]; 我做的是小型仪器的硬件开发的,主要做的是上层的应用,对这一块也不是太懂,测试时,只是个别仪器会出现卡死的情况,个别不会,如果底层发送数据的频率过快,而上层的安卓app接收串口数据不够快的话会不会出现堵塞的情况,从而造成界面卡死状态?有没谁也遇到过这样的问题?
as1_2
2016-08-09
打赏
举报
回复
下面是接收数据的主要代码 public void run() { while (true) { try { if (m_iPosStart >= m_iPosEnd) { //读取数据的起止位置 m_iPosStart = 0; m_iPosEnd = 0; } if (m_iPosEnd > AppConfig.MAX_REC_BUFLEN) {//最大的缓存数据 m_iPosStart = 0; m_iPosEnd = 0; } if (m_iPosEnd > AppConfig.MOVE_REC_BUFLEN) { StartEndOverMove();//数据缓存区起始位置移动的方法 } int len = mIS.read(SCI_DSP, m_iPosEnd, AppConfig.MAX_REC_BUFLEN - m_iPosEnd); /*** * 1.把数据缓存到SCI_DSP字节数组 */ if (len > 0) m_iPosEnd += len; Thread.sleep(60);//每个60毫秒接收一次数据 /*** * 2.判断缓存区的数组长度是否大于协议最小的长度,大于说明缓存了有用的数据 */ if (m_iPosEnd > (m_iPosStart + 9)) {//6+2 8个字节相当于协议头 +2字节(校验和+结束符)=10+至少一个字节的数据=11字节的数据 //无数据命令至少的字节数为10,就是说这个包存在有用数据时,检查数据是否完整 while (true) { int dataEnd = 0; /** * 2.1检查数据是否接收完整 * 完整则接收数据 */ dataEnd = chekData(SCI_DSP, m_iPosStart, m_iPosEnd);//检查数据是否接收完整的方法 //检查数据真实性及是否接收完整,dataEnd>0表示接收完整 if (dataEnd > 0) { int dataLen = dataEnd - m_iPosStart;//缓存的数据长度,初始时 m_iPosStart=0 byte[] data = new byte[dataLen]; System.arraycopy(SCI_DSP, m_iPosStart, data, 0, dataLen); m_iPosStart = dataEnd; Tool.printHex(data, 0, dataLen);//打印数据 // 接收数据(根据协议来接收) mRecordBuffered.onRecData(data);//接收数据 } else break; //接收数据不完整,跳出循环 } } } catch (Exception e) { e.printStackTrace(); //return; } } }
as1_2
2016-08-09
打赏
举报
回复
引用 2 楼 libin55 的回复:
你问错版块了,去安卓开发的版块去问问题把。最好贴上源码
哦,谢谢提醒
falloutmx
2016-08-09
打赏
举报
回复
程序缓冲爆了吧。
as1_2
2016-08-08
打赏
举报
回复
自己顶一下,哪位路过的大虾帮帮忙
android
安卓
读取
串口
然而,由于Android设备通常不直接支持
串口
通信,开发者通常需要借助
串口
转蓝牙模块,如EF_BluetoothBee,来实现
串口
数据
的
读取
和发送。下面我们将深入探讨这一主题。 1. **
串口
通信基础** - **
串口
通信**:是一种...
android开发
串口
,修改
串口
为非阻塞模式
,不过还有不少的缺陷,缺陷之一是:
读取
串口
信息是阻塞模式,在向
串口
发出命令后,如果没返回的话,
串口
将被阻塞 这样,如果在没
数据
返回的情况,线程将不能安全退出。缺陷之二是:没有停止位、奇偶校验位,停止位...
Android SerialPort
串口
读取
demo
总之,"Android SerialPort
串口
读取
demo"是一个实现Android与硬件设备
串口
通信的实例,涉及了Android平台的
串口
配置、
数据
读取
和设备交互等多个关键环节。通过这个项目,开发者可以学习到如何在Android上实现
串口
...
android
串口
调用,使用c开发的,可以设置
串口
超时
在Android平台上进行
串口
通信是实现设备间交互...总之,通过C语言开发的
串口
调用并设置超时,可以提供更加可控的通信体验,避免因长时间等待
数据
而导致的程序阻塞。这种方法在需要高效、实时的
串口
交互场景中特别有用。
android下的
串口
读写及
数据
保存
5. **错误处理和异常捕获**:在
串口
通信中,必须处理各种可能
出现
的错误,如
串口
不可用、
数据
传输错误等。通常需要在关键代码段使用`try-catch`结构,捕获并处理`IOException`和其他相关异常。 6. **线程管理**:...
Android
80,471
社区成员
91,385
社区内容
发帖
与我相关
我的任务
Android
移动平台 Android
复制链接
扫一扫
分享
社区描述
移动平台 Android
android
android-studio
androidx
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章