android串口通讯

一.配置
1.下载文件 https://github.com/cepr/android-serialport-api
2.复制android_serialport_api文件夹至app\src\main\java
3.复制jni文件至app\src\main文件夹下
4.复制armeabi armeabi-v7a x86至app\libs
5.在build.gradle 中的android中添加

sourceSets {
	main {
   		 jniLibs.srcDirs = ['libs']   //引用libs下的.so文件
	}
 }

二.代码

private void openSerialPort() {
    try {
    	//android屏不同,使用串口不同  /dev/ttyS0? ttyGS0? ttyAMA0
        SerialPort serialPort = new SerialPort(new File("/dev/ttyGS2"), 9600, 0); 
        inputStream = serialPort.getInputStream();
        outputStream = serialPort.getOutputStream();
        //监控串口数据
        new Thread(){
			public void run() {
				while(!isInterrupted()) {
					try {
						Thread.sleep(20);  
						int count = inputStream.available();
						if (count == 0) continue; //没有接收到数据
						byte[] buffer = new byte[count];
						inputStream.read(buffer);
						Log.d("", "接收数据:"+Arrays.toString(buffer));
					} catch ( IOException | InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
		}.start();
    } catch (IOException e) {
        Log.e("openSerialPort:",  e.toString());
    }

三.使用电脑进行串口测试
1.电脑安装串口调试助手及相关驱动
2.usb转串口线连接电脑(android端也可以用usb转串口模拟)
3.打开串口调试助手,设置好COM、 波特率等

四.serial_port android6.0或以上text relocations错误解决: 重新编译so文件
4.1 新建一个项目,用于重新编译so文件
4.2下载使用ndk
File -> Project Structure
在这里插入图片描述4.3将jin文件复制到app目录下
jin文件下的Android.mk添加

LOCAL_LDFLAGS += -fPIC

4.4在build.gradle文件中添加

		externalNativeBuild {
            ndkBuild {
                path 'jni/Android.mk'
            }
        }

在这里插入图片描述4.5 make project
编译完成,在build/intermediates下发现以下文件(各平台使用的libserial_port.so文件)
在这里插入图片描述

4.6 复制local下的文件替换目标项目app\libs下的so文件
在这里插入图片描述
五.异常记录
异常状况1:
小概率在启动后, 数据能发送到android端, 从android端发送不出去;
此时重新启动串口时卡住, 过一段时间就好了,运行正常;
原因:
android启动时耗用了大部分资源,此时自启动程序、串口,可能因为卡住导致串口启动异常;
解决方式:
app自启动延时、串口再相对app启动延时。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值