Android-EasySerialPort
非常好用、非常稳定的Android串口封装
久经两年多项目考验,一直很稳定
使用说明
第一步,在gradle(Project)下添加
allprojects {
repositories {
...
maven { url 'https://www.jitpack.io' }
}
}
第二步,导入依赖
dependencies {
implementation 'com.github.maybesix:Android-XHLibrary:v1.0.0'
}
在需要实现Activity或者Service中这样写:
SerialPortHelper serialPort;
String port = "/dev/ttyHSL1";
int baudRate = 9600;
//串口程序初始化
serialPort = new SerialPortHelper(port, baudRate, this);
//打开串口
serialPort.open();
串口发送:
//发送十六进制
serialPort.sendHex("A55A0010002096");
//发送文本
serialPort.sendHex("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);
}
}
或者可以使用构造者链式调用(kotlin写法)
serialPort = EasySerialPort.Builder()
.setBaudRate(9600)
.setPort("")
.setSatesListener(object : EasySerialPort.OnStatesChangeListener {
/**
* 打开的状态回调
*
* @param isSuccess 是否成功
* @param reason 原因
*/
override fun onOpen(isSuccess: Boolean, reason: String) {
Log.i("EasySerialPort", "是否开启成功:$isSuccess,原因:$reason")
Toast.makeText(
applicationContext,
"是否开启成功:$isSuccess,原因:$reason",
Toast.LENGTH_SHORT
).show()
}
/**
* 关闭的状态回调
*/
override fun onClose() {
Log.i("EasySerialPort", "已关闭")
Toast.makeText(applicationContext, "已关闭", Toast.LENGTH_SHORT).show()
}
})
.setListener {
//处理接收的串口消息
val s: String = HexStringUtils.byteArray2HexString(it.recData)
Log.i("EasySerialPort", "onReceived: $s,time:${it.recTime}")
textView.text = s
}
.build()
至此,串口的打开、发送、接收就全部完成了。
串口相关
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数组
项目更新内容:
v1.1:
升级至androidx
去除不必要的依赖
支持链式调用配置监听事件、设置端口号、设置波特率
修改串口接收数据时格式化时间,现在改为时间戳
如果这个项目对你有帮助,请点个star!