android中串口的问题

在Android应用程序中,两个Activity通过同一串口与设备通信时遇到问题。当一个Activity关闭串口和流后,另一个Activity无法接收到第一条或若干条数据。经排查发现,`inputStream.read()`造成了阻塞。为解决此问题,在关闭串口输出流前,发送一条消息给串口并修改while循环条件,确保被阻塞的`inputStream`在接收数据后不会影响到其他Activity的数据接收。
摘要由CSDN通过智能技术生成

程序中用到了两个activity通过同一个串口与锁控板通信,通信的代码是从网上找的 google官方给的通用的好像是,问题现象是当一个activity打开串口通信完成后关闭串口和流,另一个activity与串口通信时第一条数据或者N条数据收不到(多少条收不到取决于上一个activity打开了几次串口),打印输出板子是返回信息了,后来打印了N多信息和断点 发现问题出现在这一行代码上
在这里插入图片描述
断点在这一行上面的代码没有执行,上一行的输出也没打印(已删除输出代码),发送的回调也不是当前activity的,最后百度得知inputStream.read()是会阻塞的 等于是我把所有该关的都关了 唯独剩了这里在等待接收数据,程序不挂掉它收不到数据就一直阻塞着(打开几次串口阻塞几次),郁闷了好几天的问题终于找到原因了,最后的解决办法是在关掉串口的输出流之前将while的改为false 并发送一条无关紧要的消息给串口(确保串口会返回信息),在关闭输入输出流,这样在阻塞的inputStream收到数据后就不会影响另一个activity的数据了.最后把该类的完整代码奉上
package com.hbth.rfid.serial.port;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import android_serialport_api.SerialPort;

/**

  • @author 小九
  • @date 2021/5/12 9:37

*/
public class SerialPortUtil {

private ILockSigna
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值