串口 多个activity 安卓_Android-EasySerialPort
Android-EasySerialPort
非常好用、非常穩(wěn)定的Android串口封裝
久經(jīng)兩年多項(xiàng)目考驗(yàn),一直很穩(wěn)定
使用說(shuō)明
第一步,在gradle(Project)下添加
allprojects {
repositories {
...
maven { url 'https://www.jitpack.io' }
}
}
第二步,導(dǎo)入依賴
dependencies {
implementation 'com.github.maybesix:Android-XHLibrary:v1.0.0'
}
在需要實(shí)現(xiàn)Activity或者Service中這樣寫:
SerialPortHelper serialPort;
String port = "/dev/ttyHSL1";
int baudRate = 9600;
//串口程序初始化
serialPort = new SerialPortHelper(port, baudRate, this);
//打開(kāi)串口
serialPort.open();
串口發(fā)送:
//發(fā)送十六進(jìn)制
serialPort.sendHex("A55A0010002096");
//發(fā)送文本
serialPort.sendHex("hello world");
串口接收:實(shí)現(xiàn)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);
}
}
或者可以使用構(gòu)造者鏈?zhǔn)秸{(diào)用(kotlin寫法)
serialPort = EasySerialPort.Builder()
.setBaudRate(9600)
.setPort("")
.setSatesListener(object : EasySerialPort.OnStatesChangeListener {
/**
* 打開(kāi)的狀態(tài)回調(diào)
*
* @param isSuccess 是否成功
* @param reason 原因
*/
override fun onOpen(isSuccess: Boolean, reason: String) {
Log.i("EasySerialPort", "是否開(kāi)啟成功:$isSuccess,原因:$reason")
Toast.makeText(
applicationContext,
"是否開(kāi)啟成功:$isSuccess,原因:$reason",
Toast.LENGTH_SHORT
).show()
}
/**
* 關(guān)閉的狀態(tài)回調(diào)
*/
override fun onClose() {
Log.i("EasySerialPort", "已關(guān)閉")
Toast.makeText(applicationContext, "已關(guān)閉", Toast.LENGTH_SHORT).show()
}
})
.setListener {
//處理接收的串口消息
val s: String = HexStringUtils.byteArray2HexString(it.recData)
Log.i("EasySerialPort", "onReceived: $s,time:${it.recTime}")
textView.text = s
}
.build()
至此,串口的打開(kāi)、發(fā)送、接收就全部完成了。
串口相關(guān)
isOpen : 是否開(kāi)啟串口
getBaudRate : 獲取波特率
setBaudRate : 設(shè)置波特率
getPort : 獲取串口名稱
setPort : 設(shè)置串口名稱
open : 打開(kāi)串口
close : 關(guān)閉串口
sendHex : 以16進(jìn)制發(fā)送
sendTxtString : 以文本發(fā)送
getLoopData : 獲取循環(huán)發(fā)送的數(shù)據(jù)
setLoopData : 設(shè)置循環(huán)發(fā)送的數(shù)據(jù)
getDelay : 獲取延遲
setDelay : 設(shè)置延時(shí)(毫秒)
startSend : 開(kāi)啟循環(huán)發(fā)送
stopSend : 停止循環(huán)發(fā)送
OnSerialPortReceivedListener : 串口數(shù)據(jù)接收回調(diào)
getRecData : 獲取串口數(shù)據(jù)
setRecData : 設(shè)置串口數(shù)據(jù)
getRecTime : 獲取接收時(shí)間
setRecTime : 設(shè)置接受時(shí)間
getComPort : 獲取串口名稱
setComPort : 設(shè)置串口名稱
串口數(shù)據(jù)處理相關(guān)
isOdd : 判斷是否為奇數(shù)
hexString2Int : 16進(jìn)制字符串轉(zhuǎn)int
hexString2Byte : 16進(jìn)制字符串轉(zhuǎn)byte
byte2HexString : byte轉(zhuǎn)16進(jìn)制字符串
byteArray2HexString : byte數(shù)組轉(zhuǎn)16進(jìn)制字符串
hexString2ByteArray : 16進(jìn)制字符串轉(zhuǎn)byte數(shù)組
isPassCRC : 返回是否通過(guò)驗(yàn)證
getCrcString : 獲取16進(jìn)制的crc字符串
toHexString : int轉(zhuǎn)16進(jìn)制字符串
getCrc : 傳入bytes,計(jì)算得到CRC驗(yàn)證碼
hexToByte : 16進(jìn)制字符串轉(zhuǎn)byte數(shù)組
項(xiàng)目更新內(nèi)容:
v1.1:
升級(jí)至androidx
去除不必要的依賴
支持鏈?zhǔn)秸{(diào)用配置監(jiān)聽(tīng)事件、設(shè)置端口號(hào)、設(shè)置波特率
修改串口接收數(shù)據(jù)時(shí)格式化時(shí)間,現(xiàn)在改為時(shí)間戳
如果這個(gè)項(xiàng)目對(duì)你有幫助,請(qǐng)點(diǎn)個(gè)star!
總結(jié)
以上是生活随笔為你收集整理的串口 多个activity 安卓_Android-EasySerialPort的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python一百行代码多少钱_用86行P
- 下一篇: 试卷8449c 语言,二级C语言上机题库