第一步导包
// 在项目根目录的build.gradle文件中添加:
allprojects {
repositories {
...
mavenCentral()
}
}
// 在项目Module下的build.gradle文件中添加:
dependencies {
implementation 'io.github.xmaihh:serialport:2.1.1'
}
这个库基本可以满足所有Android 串口开发和使用。不管你对接的设备是私有协议还是标准的工业协议,无非就是数据位的不同,奇偶校验的不同或者停止位的不同,而这个库都可以支持,并且还支持流控。
到这里,基本就只剩API的调用来完成相应的业务要求了。
serialport库,直接上代码
//初始化SerialHelper对象,设定串口名称和波特率
serialHelper = new SerialHelper(Const.SPORT_NAME, Const.BAUD_RATE) {
@Override
protected void onDataReceived(ComBean paramComBean) {
//根据自己的业务自行处理接收的数据
......
}
};
/*
* 默认的BaseStickPackageHelper将接收的数据扩展成64位,一般用不到这么多位
* 我这里重新设定一个自适应数据位数的
*/
serialHelper.setStickPackageHelper(new AbsStickPackageHelper() {
@Override
public byte[] execute(InputStream is) {
try {
int available = is.available();
if (available > 0) {
byte[] buffer = new byte[available];
int size = is.read(buffer);
if (size > 0) {
return buffer;
}
} else {
SystemClock.sleep(50);
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
});
上面代码,在创建serialHelper之时,就已经传入了一个onDataReceived()方法,用来监听串口数据接收,但是如要打开串口才能开启监听。
SerialHelper创建完成,打开串口
serialHelper.open();
如果需要设置其他的属性,比如设置奇偶检验,需要在执行open()之前设定。
serialHelper.setPort(String sPort); //设置串口
serialHelper.setBaudRate(int iBaud); //设置波特率
serialHelper.setStopBits(int stopBits); //设置停止位
serialHelper.setDataBits(int dataBits); //设置数据位
serialHelper.setParity(int parity); //设置校验位
serialHelper.setFlowCon(int flowcon); //设置流控
发送数据
serialHelper.send(byte[] bOutArray); // 发送byte[]
serialHelper.sendHex(String sHex); // 发送Hex
serialHelper.sendTxt(String sTxt); // 发送ASCII
关闭串口
serialHelper.close();
源码资源: GitHub - xiaozhuang799/AndFasterSerialPort: 快速开发和使用Android串口