Android 串口通讯

Serial Port

Android 串口通讯 arm64-v8a、armeabi-v7a、x86、x86_64

AAR
名称 操作
serial.jar 下载
arm64-v8a 下载
armeabi-v7a 下载
x86 下载
x86_64 下载
arm-zip 下载
x86-zip 下载
Maven

1.build.grade | setting.grade

复制代码
repositories {
	...
	maven { url 'https://jitpack.io' }
}

2./app/build.grade

复制代码
dependencies {
	implementation 'com.github.RelinRan:SerialPort:2023.9.14.1'
}

3.CPU架构

复制代码
defaultConfig {
   ndk {
       abiFilters 'arm64-v8a','armeabi-v7a','x86','x86_64'
    }
}
文件依赖

下载的jar放入libs文件夹,so文件放入jniLibs文件夹

复制代码
android {
    sourceSets {
        main {
            jniLibs.srcDirs = ['src/main/jniLibs']
        }
    }
}
权限
复制代码
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
路径

所有驱动路径

复制代码
 SerialPortFinder finder = new SerialPortFinder();
 String[] paths = finder.getAllDevicesPath();
 for (String path : paths) {
     Log.i("SerialPortFinder","path:"+path);
 }
通讯

初始化串口

复制代码
Serial serial = new Serial("/dev/ttyMSM2",30001,SerialMode.RDWR);

设置监听

复制代码
serial.setOnSerialListener(new OnSerialListener() {

    @Override
    public void onSerialSend(byte[] data) {
        //发送内容
    }

    @Override
    public void onSerialReceived(byte[] data) {
        //接收内容
    }
    
});

打开串口

复制代码
serial.open();

关闭串口

复制代码
serial.close();
代理

服务配置

复制代码
<service
    android:name="android.serial.port.api.SercdService"
    android:directBootAware="true"
    android:enabled="true" />

初始化

复制代码
Sercd sercd = new Sercd(getContext());

网络接口列表 + 端口

复制代码
String netInterface = "";
int port = 30001;
Map<String, String> map = sercd.feedNetworkInterfacesList();
for (String key:map.keySet()){
    //wifi是wlan0
    if (key.equals("eth0")){
        netInterface = map.get(key);
    }
}

设置监听

复制代码
sercd.setOnSercdListener(new OnSercdListener() {
    @Override
    public void onSercdStateChange(ProxyState proxyState) {
        System.out.println("proxyState:"+proxyState);
    }
});

开始代理

复制代码
sercd.start("/dev/ttyMSM2",netInterface,port);

关闭代理

复制代码
sercd.stop();
字节工具
复制代码
Bytecode bytecode = new Bytecode();
byte b = 0b00001111;

Boolean值Byte

复制代码
byte b = bytecode.toByte(false,false,false,false,true,true,true,true);//00001111

Byte的Boolean\[\]

复制代码
boolean[] booleans = bytecode.toBooleans(b);//[false, false, false, false, true, true, true, true]

Byte转十六进制

复制代码
String hex = bytecode.toHex(b);//0F

Byte转十进制

复制代码
int dec = bytecode.toDec(b);//15

Byte转八进制

复制代码
String oct = bytecode.toOct(b);//017

Byte转二进制

复制代码
String bin = bytecode.toBin(b);//00001111

Byte数组转十六进制字符串

复制代码
float floatValue = 99.99f;
byte[] data = bytecode.toBytes(floatValue);
String hexString = bytecode.toHex(data);//E1 FA C7 42 

十六进制String转Byte数组

复制代码
byte[] value = bytecode.toBytes(hexString);//[-31, -6, -57, 66]

Byte数组转Float

复制代码
float floatValue = 99.99f;
byte[] data = bytecode.toBytes(floatValue);
float value = bytecode.toFloat(new byte[]{data[0],data[1],data[2],data[3]}));//99.99

Byte数组转Short

复制代码
short shortValue = 33;
byte[] data = bytecode.toBytes(shortValue);
short value = bytecode.toShort(new byte[]{data[0],data[1]}));//33

Byte数组转Int

复制代码
int intValue = 100;
byte[] data = bytecode.toBytes(intValue);
int value = bytecode.toInt(new byte[]{data[0],data[1],data[2],data[3]}));//100
相关推荐
GitLqr8 小时前
Flutter 3.44 插件内置 Kotlin (KGP) 双向兼容适配指南
android·flutter·dart
随遇丿而安12 小时前
第11周:Activity 跳转与传值 + 跳转优化
android
私人珍藏库13 小时前
[Android] BBLL 开源第三方B哩电视TV端
android·app·生活·工具·多功能
杉氧16 小时前
跨平台资源管理:一套代码如何搞定 Android、iOS 和 Web 的图片与多语言?
android·架构·android jetpack
安卓修改大师17 小时前
安卓修改大师实战:从反编译到定制的完整APK修改指南
android
柚鸥ASO优化18 小时前
安卓APP推广的“降本增效”密码:守好商店内,打好商店外
android·aso优化
我是一颗柠檬19 小时前
【Java项目技术亮点】EXPLAIN深度分析与慢查询治理
android·java·开发语言
Android-Flutter19 小时前
android compose shadow 阴影 使用
android·kotlin·compose
帅次19 小时前
Android 高级工程师面试:Java 多线程与并发 近1年高频追问 22 题
android·java·面试
2501_9437823519 小时前
【共创季稿事节】摩斯电码转换器:编码表与双向转换的实现
android·华为·鸿蒙·鸿蒙系统