庫(kù)源碼在https://github.com/F1ReKing/Android-SerialPort
前言
最近幾個(gè)月一直有持續(xù)在做跟硬件串口數(shù)據(jù)通信的項(xiàng)目,一開始用的是谷歌官方串口庫(kù)android-serialport-api,簡(jiǎn)單地封裝了接口,但硬件部門要求配置做下流控測(cè)試倚聚,但該項(xiàng)目?jī)H支持串口名稱及波特率佛玄,所以在谷歌項(xiàng)目的基礎(chǔ)上添加支持?jǐn)?shù)據(jù)位惶洲、數(shù)據(jù)位恰起、停止位惠赫、流控等配置赘娄,想想還是整理下開源出來(lái)做下貢獻(xiàn)仆潮,幫助下有需要的人。
此項(xiàng)目沒(méi)做協(xié)議解析遣臼,協(xié)議解析部分要根據(jù)協(xié)議做分包處理性置。
依賴引入
Step 1. Add the JitPack repository to your build file
Add it in your root build.gradle at the end of repositories:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Step 2. Add the dependency
dependencies {
implementation 'com.github.F1ReKing:Android-SerialPort:1.1'
}
使用
1. 查詢串口列表
SerialPortFinder#getDrivers();
2. 配置串口參數(shù)
SerialPortHelper#Builder(String port, int baudRate).build(); //支持配置串口號(hào),波特率(默認(rèn)值115200)
setStopBits(int stopBits); // 支持設(shè)置停止位 默認(rèn)值為2
setDataBits(int dataBits); // 支持設(shè)置數(shù)據(jù)位 默認(rèn)值為8
setParity(int parity); // 支持設(shè)置檢驗(yàn)位 默認(rèn)值為0
setFlowCon(int flowCon); // 支持設(shè)置流控 默認(rèn)值為0
setFlags(int flags); // 支持設(shè)置標(biāo)志 默認(rèn)值為0揍堰,O_RDWR 讀寫方式打開
3. 打開串口
SerialPortHelper#open();
4. 關(guān)閉串口
SerialPortHelper#close();
4. 發(fā)送數(shù)據(jù)
SerialPortHelper#sendBytes(byte[] bytes); // 支持發(fā)送byte[]
SerialPortHelper#sendHex(String hex); // 支持發(fā)送Hex
SerialPortHelper#sendTxt(String txt); // 支持發(fā)送ASCII碼
5. 接收數(shù)據(jù)
public interface ISerialPortDataListener {
// 接收數(shù)據(jù)回調(diào)
void onDataReceived(byte[] bytes);
// 發(fā)送數(shù)據(jù)回調(diào)
void onDataSend(byte[] bytes);
}
6. 回調(diào)
// 串口打開狀態(tài)監(jiān)聽
void setIOpenSerialPortListener(IOpenSerialPortListener IOpenSerialPortListener);
// 串口消息監(jiān)聽
void setISerialPortDataListener(ISerialPortDataListener ISerialPortDataListener);