转至: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空间里显示接收到的数据