程序中用到了两个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