android 串口框架,Android-EasySerialPort 一个使用很方便的Android串口调用库

项目更新内容:

v1.1:

(还未更新远程依赖,需要用的下载下来自用,抽时间我更新上去,不要忘了start)

升级至androidx

去除不必要的依赖

支持链式调用配置监听事件、设置端口号、设置波特率

修改串口接收数据时格式化时间,现在改为时间戳

背景

之前在一个项目中,需要使用Android开发板来做项目,其中的一个需求是使用串口。最开始是用厂家提供的串口示例程序,但是配置异常麻烦。需要so文件,gradle需要配置,需要导入libs等等。

在第二个项目中,恰好又有串口的需求,但是开发版换了,使用之前的厂家的so文件,竟然出错没法运行。由于之前的厂家未提供相应的源码,所以无法查看是什么导致的so文件出错。所以借鉴网上的项目和谷歌的开源项目github.com/cepr/androi…来实现串口的调用。由于很多第三方库质量参差不齐,出了问题也不知道是什么原因。因此自己基于官方公布.so来封装串口库,最终用了很长的时间,才实现串口的功能。同样的问题,由于使用NDK去调用串口的程序,配置异常麻烦。

所以,我抽时间把之前的程序梳理了一遍,方便后来者使用。

优点

1.使用方便

在需要实现Activity或者Service中这样写:

SerialPortHelper serialPort;

//串口程序初始化

serialPort = new SerialPortHelper();

//设置端口

serialPort.setPort("/dev/ttyHSL1");

//设置波特率

serialPort.setBaudRate("9600");

//设置接收消息监听

serialPort.setSerialPortReceivedListener(this);

//打开串口

serialPort.open();

复制代码

串口发送:

//发送十六进制

serialPort.sendHex("A55A0010002096");

//发送文本

serialPort.sendTxtString("hello world");

复制代码

串口接收:实现SerialPortHelper.OnSerialPortReceivedListener接口

public class MainActivity extends AppCompatActivity implements SerialPortHelper.OnSerialPortReceivedListener {

...

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

...

}

...

@Override

public void onSerialPortDataReceived(ComPortData comPortData) {

//处理接收的串口消息

String s = HexStringUtils.byteArray2HexString(comPortData.getRecData());

Log.i(TAG, "onReceived: " + s);

}

}

复制代码

至此,串口的打开、发送、接收就全部完成了。

2.适配性强

在视美泰的3288全系列、使用未知名开发板、智洋核心板等都通过实际测试。可以用于实际的生产。

相关方法介绍

串口相关

isOpen : 是否开启串口

getBaudRate : 获取波特率

setBaudRate : 设置波特率

getPort : 获取串口名称

setPort : 设置串口名称

open : 打开串口

close : 关闭串口

sendHex : 以16进制发送

sendTxtString : 以文本发送

getLoopData : 获取循环发送的数据

setLoopData : 设置循环发送的数据

getDelay : 获取延迟

setDelay : 设置延时(毫秒)

startSend : 开启循环发送

stopSend : 停止循环发送

OnSerialPortReceivedListener : 串口数据接收回调

复制代码getRecData : 获取串口数据

setRecData : 设置串口数据

getRecTime : 获取接收时间

setRecTime : 设置接受时间

getComPort : 获取串口名称

setComPort : 设置串口名称

复制代码

串口数据处理相关

isOdd : 判断是否为奇数

hexString2Int : 16进制字符串转int

hexString2Byte : 16进制字符串转byte

byte2HexString : byte转16进制字符串

byteArray2HexString : byte数组转16进制字符串

hexString2ByteArray : 16进制字符串转byte数组

复制代码isPassCRC : 返回是否通过验证

getCrcString : 获取16进制的crc字符串

toHexString : int转16进制字符串

getCrc : 传入bytes,计算得到CRC验证码

hexToByte : 16进制字符串转byte数组

复制代码

如果帮助了你,请点个赞,收个藏!

欢迎加入AndroidXH技术群,群聊号码:755520968

群没人解散了

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值