java uart串口 jni_UartTools

@[toc]

前言

现在一直在弄蓝牙的项目,已经有一年时间没有弄Android的东西了。现在有时间想把以前弄的东西整理一下,方便自己以后需要用时翻出来看看。

这个APP是以前在MT6735平台Android 5.1(L1)调试验证UART外设发送过来的数据是否正确,想着也许后面调试还用的着,就记录一下。

硬件平台相关配置

APP需要操作平台设备硬件时,需要了解以下几点信息(我这里是在MTK平台上,其它Android平台也类似):

需要操作的UART是否有权限?系统默认其它APP没有读写权限,这里需要添加权限,以下有2种方式:

// 方式一:使用adb直接给UART设备添加权限

$ adb shell

$ chmod 0666 /dev/ttyMT*

// 方式二:在init.rc文件里面添加权限,每次开机它都自动添加权限。和方式一相比就不用每次手动添加权限;

chmod 0666 /dev/ttyMT*

chown system system /dev/ttyMT*

MTK平台UART硬件物理端口名称和软件字符设备名称对应关系:

硬件物理端口名称

软件字符设备名称

UART1

/dev/ttyMT0

UART2

/dev/ttyMT1

UART3

/dev/ttyMT2

UART4

/dev/ttyMT3

如何关闭SELinux权限? 在Android 5.0以上添加了这个权限,字符设备有read/write权限APP也不能直接访问字符设备。这里有3种处理方式:

设备是ENG版本(有root权限),可以使用adb将SELinux关闭。

adb shell setenforce 0

将APP操作UART需要的权限添加到SELinux。(这里暂不介绍)

在Kernel LOG / Main Log 中查询关键字 "avc:" 看看是否有SELinux Policy Exception。

代码中关闭selinux机制。

文件路径:bootable/bootloader/lk/platform/mt6735/rules.mk

文件中对应的内容:

// choose one of following value -> 1: disabled/ 2: permissive /3: enforcing

把SELINUX_STATUS := 3修改为SELINUX_STATUS := 1

APP主要实现的功能

功能很简单,主要是将UART外设发送的数据实时的在APP上面显示出来。

527c7e2ef1910b2437d4afe9e34c75af.png

APP层代码分析

APP层代码主要是2个class:MainActivity和UartJniTool

MainActivity是主界面窗口类,主要处理步骤如下:

uartJniTool = new UartJniTool(mhandler);实例化UartJniTool类,并且将mhandler传递给UartJniTool对象保存起来,方便后面更新UI。(Android规定只有主线程才能更新UI)

定义一个readUartBtn,被点击后uartJniTool.uartToolStart();开始获取uart data,再次被点击停止获取数据并且关闭uart。

定义一个writeUartBtn,发送固定的一段字符串,验证APP是否可以正常的发送数据。

定义的mhandler主要是将接收到消息的数据,显示在TextView上;

public class MainActivity extends AppCompatActivity {

private static final String TAG= "MainActivity";

private static final int UARTDATA= 8001;

UartJniTool uartJniTool;

ToggleButton readUartBtn;

Button writeUartBtn;

TextView uartText;

private int offset;

@Override

protected void onCreate(Bu

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值