首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Andoird开发之SerialPort串口开发

Andoird开发之SerialPort串口开发

作者头像
饮水思源为名
发布2019-08-07 15:22:26
1.9K0
发布2019-08-07 15:22:26
举报
文章被收录于专栏:Android小菜鸡Android小菜鸡

关于安卓设备上使用串口,谷歌官方在github上有提供代码实例,里面有JNI的代码和串口API的java文件,工程的地址如下: https://github.com/cepr/android-serialport-api

今天,分享给大家,我自己用SerialPort实现串口开发攻略。先分享项目,该项目通过串口实现了对Nest空调的,并且实现根据环境温度自动调节温度。 Github传送门 — — SerialPortProject

环境配置:

网上有很多SerialPort的文章,一部分对环境需要NDK并且自己利用google的serialport构建。这里我采用了一位大哥的项目,直接导入so文件即可。原文地址忘记了,相当抱歉。

Setp1

setp1

引入so文件和google的SerialPort包,这里需要注意的是这里的包名必须是wits.serialport。不同的so文件可能会有差异,我这里的so文件必须是这个包名,这是C文件里的代码决定的。

Setp2

setp2

引入这两个工具类在你里包的

Setp3

引入读写权限android.permission.READ_PHONE_STATEandroid.permission.WRITE_EXTERNAL_STORAGE 到此我们需要的配置就完成了,我们可以开始开发了。下面我们来分析一下SerialPort和SerialPortUtil

SerialPortUtil

初始化串口----》openSerialPort

openSerialPort

这个方法有一个需要注意的,首先是参数,参数一是串口地址,可以自己看你串口插入点的信息直接写死,参数二是波特率,需要与设备对应匹配(如果设备有要求),例如笔者接的环境探测器,就需要匹配9600。

接收串口回执的数据 ----》 reciveMsg

reciveMsg.png

接收消息自然而然是放在线程里循环执行的。当执行到inputStream.read(readData)方法的时候,会进入等待状态,直到串口回执数据时继续执行。 可以看到这里有一个休眠500毫秒的操作,意义在哪里呢?这个很重要,因为串口回执数据例如“010304f3”,如果不休眠会按偶数个拆分成数个组发送回来,而休眠500毫秒后能够只分为“01”和“0304f3”甚至一次性全部返回,这个是有偶然性的,笔者说的有点饶,各位实践一下就能明白了。 最后我们接受到的数据是一个又byte数组转化的16进制字符串,笔者是用Handler发送出去的。

发送数据给串口----》 sendMsg

sendMsg.png

这个方法唯一需要注意的是,参数是16进制的字符串,在发送前会转化成byte数组

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.08.05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境配置:
    • Setp1
      • Setp2
        • Setp3
          • SerialPortUtil
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档