赞
踩
SerialPort 是一个开源的对 Android 蓝牙串口通信的轻量封装库,轻松解决了构建自己的串口调试APP的复杂程度,让人可以专注追求自己设计,不用考虑蓝牙串口底层的配置。
从 3.0.0
开始新增链式调用,更新大量API,并上传至Jcenter,让使用变得更加简单。
V3.0.0-beta3 新特性
V3.0.0-beta0 新特性:
修复:
GitHub仓库
Gitee仓库
添加JitPack
仓库到你的配置文件
根目录下的 build.gradle
加入以下代码:
allprojects {
repositories {
//...
maven { url 'https://jitpack.io' }
}
}
添加依赖
app模块的 build.gradle 加入以下代码即可:
Github 仓库
dependencies {
implementation 'com.github.Shanyaliux:SerialPortSample:3.0.0-beta3'
}
国内仓库
dependencies {
implementation 'com.gitee.Shanya:SerialPortSample:3.0.0-beta3'
}
以下所有代码块,第一块是Kotlin,第二块是Java
val serialPort = SerialPortBuilder //是否开启Debug模式(Debug模式在Logcat打印一些信息,便于调试) .isDebug(true) //是否开启自动连接 .autoConnect(true) //设置接收数据格式(SerialPort.READ_HEX 为十六进制,SerialPort.READ_STRING 为字符串) .setReadDataType(SerialPort.READ_HEX) //设置接收数据格式(SerialPort.SEND_HEX 为十六进制,SerialPort.SEND_STRING 为字符串) .setSendDataType(SerialPort.SEND_HEX) //设置接收 消息监听 .setReceivedDataListener { Log.d("SerialPortDebug", "received: ${it}") } //设置连接状态监听 (status 为连接状态,device 为当前连接设备) .setConnectStatusCallback { status, device -> if (status) { Log.d("SerialPortDebug", "连接: ${device.address}") } else { Log.d("SerialPortDebug", "断开") } } //创建实例(需要传入上下文) .build(this)
SerialPort serialPort = SerialPortBuilder.INSTANCE //是否开启Debug模式(Debug模式在Logcat打印一些信息,便于调试) .isDebug(true) //是否开启自动连接 .autoConnect(true) //设置接收数据格式(SerialPort.READ_HEX 为十六进制,SerialPort.READ_STRING 为字符串) .setReadDataType(SerialPort.READ_HEX) //设置接收数据格式(SerialPort.SEND_HEX 为十六进制,SerialPort.SEND_STRING 为字符串) .setSendDataType(SerialPort.SEND_HEX) //设置接收 消息监听 .setReceivedDataListener(new Function1<String, Unit>() { @Override public Unit invoke(String s) { return null; } }) //设置连接状态监听 (status 为连接状态,device 为当前连接设备) .setConnectStatusCallback(new Function2<Boolean, Device, Unit>() { @Override public Unit invoke(Boolean aBoolean, Device device) { return null; } }) //创建实例(需要传入上下文) .build(this);
以上仅是获取了 SerialPort
的实例,想要开始使用 SerialPort
请先连接设备。方法如下:
使用内部集成的搜索页面进行连接
serialPort.openDiscoveryActivity()
serialPort.openDiscoveryActivity();
打开页面点击需要连接的设备即可
自行使用设备地址进行连接
serialPort.connectDevice("98:D3:32:21:67:D0")
serialPort.connectDevice("98:D3:32:21:67:D0");
自行使用设备地址连接的设备名称为空。
serialPort.disconnect()
serialPort.disconnect();
可选参数(默认是 字符类型) | |
---|---|
SerialPort.READ_STRING | 字符类型 |
SerialPort.READ_HEX | 十六进制 |
serialPort.setReadDataType(SerialPort.READ_HEX)
serialPort.setReadDataType(SerialPort.READ_HEX);
可选参数(默认是 字符类型) | |
---|---|
SerialPort.SEND_STRING | 字符类型 |
SerialPort.SEND_HEX | 十六进制 |
serialPort.setSendDataType(SerialPort.SEND_HEX)
serialPort.setSendDataType(SerialPort.SEND_HEX);
serialPort.sendData("hello")
serialPort.sendData("hello");
如果发送数据格式设置为16进制,输入的数据需要为偶数,只有一位的数据需要在前面补0。
例如:0x0A 需要写成 0A,serialPort.sendData("0A")
serialPort.setReceivedDataListener { it
// it即为接收数据
Log.d("SerialPortDebug", "received: ${it}")
}
serialPort.setReceivedDataListener(new Function1<String, Unit>() {
@Override
public Unit invoke(String s) {
return null;
}
});
接收数据回调如果在多个地方调用,仅最后一个生效。
serialPort.setConnectStatusCallback { status, device ->
if (status) {
Log.d("SerialPortDebug", "连接: ${device.address}")
} else {
Log.d("SerialPortDebug", "断开")
}
}
serialPort.setConnectStatusCallback(new Function2<Boolean, Device, Unit>() {
@Override
public Unit invoke(Boolean aBoolean, Device device) {
return null;
}
})
连接状态回调如果在多个地方调用,仅最后一个生效。
需使用 3.0.0-beta2 版本及以上
此时的接收数据格式为十六进制
调用方法转换
serialPort.hexStringToString(hexString)
serialPort.hexStringToString(hexString);
自动转换(初始化的时候打开标志位即可)
val serialPort = SerialPortBuilder
.autoHexStringToString(true)
.build(this)
SerialPort serialPort = SerialPortBuilder.INSTANCE
.autoHexStringToString(true)
.build(this);
需使用 3.0.0-beta3 版本及以上
serialPort.openDiscoveryActivity(Intent(this,DiscoveryActivity::class.java))
serialPort.openDiscoveryActivity(new Intent(this, DiscoveryActivity.class));
需使用 3.0.0-beta3 版本及以上
serialPort.doDiscovery(this)
serialPort.doDiscovery(this);
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。