您的位置:首页 > 移动开发 > Android开发

Android串口操作,简化android-serialport-api的demo

2016-11-17 08:50 585 查看
转至:http://blog.sina.com.cn/s/blog_686e24890102wep3.html

最近在做android串口的开发,找到一个开源的串口类android-serialport-api。其主页在这里http://code.google.com/p/android-serialport-api/  ,这里可以下到APK及对源码。谷歌的代码库,无奈国内无法下载
https://github.com/cepr/android-serialport-api     GITHUB的地址,这个可以下载

————————————————————————————————————————-----------

为了方便国内用户,我将它重新上传了:http://download.csdn.net/detail/zhaoqi2617/9685234,在这里下载就好。

————————————————————————————————————————————————

    但是下载源码之后发现源码不能直接使用,而且源码结构较为复杂。关于串口的操作不外乎几步:

   1.打开串口(及配置串口);

   2.读串口;

   3.写串口;

   4.关闭串口。

android-serialport-api的代码使用了继承等复杂的行为,不容易使初学者很快掌握关于串口的上述4步,所以我特别自己写了一个demo,只有一个activity,其中包含了打开串口,写串口,读串口的操作,对于关闭串口,大家一开就会不明白怎么写了。

这篇文章主要参考http://blog.csdn.net/tangcheng_ok/article/details/7021470

还有http://blog.csdn.net/jerome_home/article/details/8452305

下面言归正传:

第一:

  说道android 串口,就不得不提JNI技术,它使得java中可以调用c语言写成的库。为可在android中使用串口,android-serialport-api的作者自己写了一个c语言的动态链接库serial_port.so(自动命名成libserial_port.so),并把它放在了libs/aemeabi 里,其c源文件在JNI中,大家在下载了android-serialport-api的源代码后,将这两个文件夹copy到自己新建的工程中即可。



 。

 

第二:然后将调用c语言写成的动态链接库的java类放入到src文件夹下的android_serialport_api包下,这里一定要将包名命名成这个,因为对JNI有一定了解的人就会知道,在写c语言链接库时候,函数的命名是和调用它的类所在的包名相关的,一旦包名与链接库中函数的命名不相符,就不能调用链接库的函数

第三:

android_serialport_api包下,有两个类,分别是SerialPort.java 和SerialPortFinder.java。

其中,SerialPort.java,这个类主要用来加载SO文件,通过JNI的方式打开关闭串口。

还有一个类SerialPortFinder.java,这个类是用来找到系统中可以用的串口的,如果你知道的android设备有什么串口,就不必使用这个类来查找串口了,一次简化我们的demo。

第四:加入我们自己的Activity类

  为了方便我记在android_serialport_api包下加入了我自己的MyserialActivity.java,大家从上面的图中也可以看见。

代码如下不贴了,在工作目录下的文件夹myserial里找找

功能比较简单,只有三个按钮,分别用来打开串口(buttonsetup),写串口(buttonsend),读串口(buttonrec),一个文本框用来显示串口接收到的信息。功能已经简化到了最简。

下面先说说在模拟器中使用串口的方法:

应先使用-serial选项打开你的模拟器,在dos里进入emulator.exe​所在的目录里

输入命令emulator @AVD4.3 -qemu -serial COM1​  在这里AVD4.3是我在eclipse定义过的模拟器,COM1是我pc机上的物理串口

接着命令输入:

adb shell 

  cd /dev

chmod 777 ttyS2

修改串口的读写权限

最后做好的界面如下









串口软件 

先open串口,再send,另一台电脑串口就能收到send字符,另一台电脑发送一串字符串后在我的界面上点击rev按钮就会在REC空间里显示接收到的数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: