Android-Serialport

移植谷歌官方串口库android-serialport-api,仅支持串口名称及波特率,该项目添加支持校验位、数据位、停止位、流控配置项

Android-Serialport

GitHub forksGitHub issuesGitHub starsSource persentJcenter2.1Demo apk download AppVeyor branchGitHub license

文档

使用依赖Download

  1. Gradle引用
    implementation 'tp.xmaihh:serialport:2.1'
  2. Maven引用
    <dependency>
    <groupId>tp.xmaihh</groupId>
    <artifactId>serialport</artifactId>
    <version>2.1</version>
    <type>pom</type>
    </dependency>

    属性支持

    属性 参数
    波特率 BAUDRATE
    数据位 5,6,7,8 ;默认值8
    校验位 无奇偶校验(NONE), 奇校验(ODD), 偶校验(EVEN); 默认无奇偶校验
    停止位 1,2 ;默认值1
    流控 不使用流控(NONE), 硬件流控(RTS/CTS), 软件流控(XON/XOFF); 默认不使用流控

    代码功能

    1.列出串口列表

    serialPortFinder.getAllDevicesPath();

    2.串口属性设置

    serialHelper.setPort(String sPort);      //设置串口
    serialHelper.setBaudRate(int iBaud);     //设置波特率
    serialHelper.setStopBits(int stopBits);  //设置停止位
    serialHelper.setDataBits(int dataBits);  //设置数据位
    serialHelper.setParity(int parity);      //设置校验位
    serialHelper.setFlowCon(int flowcon);    //设置流控

串口属性设置需在执行open()函数之前才能设置生效

3.打开串口

serialHelper.open();

4.关闭串口

serialHelper.close();

5.发送

serialHelper.send(byte[] bOutArray); // 发送byte[]
serialHelper.sendHex(String sHex);  // 发送Hex
serialHelper.sendTxt(String sTxt);  // 发送ASCII

6.接收

 @Override
protected void onDataReceived(final ComBean comBean) {
       Toast.makeText(getBaseContext(), new String(comBean.bRec, "UTF-8"), Toast.LENGTH_SHORT).show();
   }

7.粘包处理

支持粘包处理,原因见issue,提供的粘包处理有

  1. 不处理(默认)
  2. 首尾特殊字符处理
  3. 固定长度处理
  4. 动态长度处理 支持自定义粘包处理,第一步实现AbsStickPackageHelper接口
    /**
    * 接受消息,粘包处理的helper,通过inputstream,返回最终的数据,需手动处理粘包,返回的byte[]是我们预期的完整数据
    * note:这个方法会反复调用,直到解析到一条完整的数据。该方法是同步的,尽量不要做耗时操作,否则会阻塞读取数据
    */
    public interface AbsStickPackageHelper {
    byte[] execute(InputStream is);
    }

    设置粘包处理

    serialHelper.setStickPackageHelper(AbsStickPackageHelper mStickPackageHelper);
    • 其实数据粘包可参考socket通讯的粘包处理,例如此处粘包处理方法出自于XAndroidSocket

      完整Demo地址

      演示效果

apk下载

PC端调试工具 友善串口调试工具

更新日志

2.1

新增

2.0

新增

1.0

新增

FAQ