安卓 关于接收串口数据的问题

hualizhuansheng 2015-11-15 12:59:54
我用InputStream读串口数据,会丢失一部分数据,我是设置的每次读1160大小的数据,每次都会丢失最后几个字节的数据,难道我缓存数据会在没读完的情况下自动清空吗?下面是我用到的代码:
int buffersize = 1160;
byte[] buffer1=new byte[buffersize];
int size = 0;
while(size<buffersize){
size += mInputStream.read(buffer1, size, buffersize-size);
}
...全文
718 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
邱金金 2017-03-12
  • 打赏
  • 举报
回复
我也遇到了同样的问题,程序在 size = mInputStream.read(buffer); 这个地方一直阻塞,不向下执行,导致程序接收不到数据,目前在百度上查找的资料没有解决这个问题的方法..
qq_31124369 2016-11-30
  • 打赏
  • 举报
回复
请问这个问题解决了吗?我也遇到相似的问题
Mr_Johhny 2016-06-06
  • 打赏
  • 举报
回复
我也遇到了同样的问题,程序在 size = mInputStream.read(buffer); 这个地方一直阻塞,不向下执行,导致程序接收不到数据,目前在百度上查找的资料没有解决这个问题的方法...
qq_28573001 2016-03-31
  • 打赏
  • 举报
回复
您好 我现在也在做这块的东西 但是我的小例子在接受数据的时候 每当运行到inputstream.read()的时候就会发生阻塞 程序一直卡在read() 函数不向下执行 我是用单片机连接电脑 在电脑上跑的安卓的模拟器 单片机每次发送一个单词给串口 然后程序就卡在那里死掉了 请问这个怎么办???
Arnold9009 2015-11-16
  • 打赏
  • 举报
回复
串口的接收不一定每次都是一个完整的数据包,也就是说,你在发送端点击一次发送,在接收端可能需要接收几次才能收完整的 数据包的完整性需要应用层添加包头、包尾、长度等来实现
hualizhuansheng 2015-11-16
  • 打赏
  • 举报
回复
谁来回复下我的问题
hualizhuansheng 2015-11-15
  • 打赏
  • 举报
回复
引用 楼主 hualizhuansheng 的回复:
我用InputStream读串口数据,会丢失一部分数据,我是设置的每次读1160大小的数据,每次都会丢失最后几个字节的数据,难道我缓存数据会在没读完的情况下自动清空吗?下面是我用到的代码: int buffersize = 1160; byte[] buffer1=new byte[buffersize]; int size = 0; while(size<buffersize){ size += mInputStream.read(buffer1, size, buffersize-size); }
不是这个原因,我在电脑上用虚拟串口给手机发数据,点击发送才发一次,每次都会丢掉几个字节,字节数还不定,时多时少,基本上是最后4到10个被丢掉了
战国剑 2015-11-15
  • 打赏
  • 举报
回复
很有可能是接收过快,串口返回时快时慢,receive时,你可以先sleep(1000)或者设置更大的时间测试一下。

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧