android串口工具 流控,GitHub - daimuruoji/Android-Serialport: 移植谷歌官方串口库,仅支持串口名称及波特率,该项目添加支持校验位、数据位、停止位、流控配置...

本文介绍了一个Android串口库的移植与增强项目,该库基于谷歌官方的android-serialport-api,并增加了对校验位、数据位、停止位和流控的配置支持。用户可以使用Gradle或Maven进行依赖引入,并通过API设置串口参数、打开与关闭串口、发送和接收数据。此外,库还提供了粘包处理功能,允许自定义处理策略,以解决串口通信中可能遇到的数据粘包问题。
摘要由CSDN通过智能技术生成

Android-Serialport

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

logo.svg

68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f786d616968682f416e64726f69642d53657269616c706f72742e73766768747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f786d616968682f416e64726f69642d53657269616c706f72742e73766768747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f786d616968682f416e64726f69642d53657269616c706f72742e73766768747470733a2f2f696d672e736869656c64732e696f2f62616467652f4a6176612d37332e322532352d627269676874677265656e2e73766768747470733a2f2f696d672e736869656c64732e696f2f62616467652f6a63656e7465722d322e312d627269676874677265656e2e73766768747470733a2f2f696d672e736869656c64732e696f2f6372617465732f64762f72757374632d73657269616c697a652e737667

68747470733a2f2f696d672e736869656c64732e696f2f6170707665796f722f63692f3a757365722f3a7265706f2f3a6272616e63682e73766768747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f786d616968682f416e64726f69642d53657269616c706f72742e737667

文档

使用依赖68747470733a2f2f6170692e62696e747261792e636f6d2f7061636b616765732f786d616968682f6d6176656e2f73657269616c706f72742f696d616765732f646f776e6c6f61642e737667

Gradle引用

implementation 'tp.xmaihh:serialport:2.1'

Maven引用

tp.xmaihh

serialport

2.1

pom

属性支持

属性

参数

数据位

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); //设置流控

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7761726e696e672d25303925323061646d6f6e6974696f6e2d79656c6c6f772e737667

串口属性设置需在执行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,提供的粘包处理有

/**

* 接受消息,粘包处理的helper,通过inputstream,返回最终的数据,需手动处理粘包,返回的byte[]是我们预期的完整数据

* note:这个方法会反复调用,直到解析到一条完整的数据。该方法是同步的,尽量不要做耗时操作,否则会阻塞读取数据

*/

public interface AbsStickPackageHelper {

byte[] execute(InputStream is);

}

设置粘包处理

serialHelper.setStickPackageHelper(AbsStickPackageHelper mStickPackageHelper);

其实数据粘包可参考socket通讯的粘包处理,例如此处粘包处理方法出自于XAndroidSocket

完整Demo地址

screen.png

68747470733a2f2f696d672e736869656c64732e696f2f6372617465732f64762f72757374632d73657269616c697a652e737667

更新日志

新增

添加支持设置接收数据粘包处理,支持设置自定义粘包处理

新增

添加支持设置校验位、数据位、停止位、流控配置项

新增

基础功能,串口设置串口号、波特率,发送、接收数据

FAQ

此library不提供ROOT权限,请自行打开串口666权限

adb shell chmod 666 /dev/ttyS1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值