主题 : 求助:android操作串口 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 84439
精华: 0
发帖: 6
金钱: 30 两
威望: 6 点
贡献值: 0 点
综合积分: 12 分
注册时间: 2012-12-21
最后登录: 2013-01-20
楼主  发表于: 2013-01-16 22:35

 求助:android操作串口

前段时间将android 移植到 mini2440平台,最近准备在上面操作串口。但是遇到一个问题,特向各位请教:因为2440是armv4t,所以不能用ndk,直接用的JNI方式。并且自己写了一个简单的相加的C,编译生成so文件,android调用没有任何问题。编译命令是:arm-none-linux-gnueabi-gcc -I /usr/lib/jvm/java-7-openjdk-amd64/include -I /usr/lib/jvm/java-7-openjdk-amd64/include/linux -fpic -c com_xiujiang_android_hardware_HardwareControl.c -march=armv4tarm-none-linux-gnueabi-ld -T /usr/local/arm/4.3.2/arm-none-linux-gnueabi/lib/ldscripts/armelf_linux_eabi.xsc -share -o libHardwareControl.so com_xiujiang_android_hardware_HardwareControl.o
现在准备操作串口就出问题了,一步一步定位,发现问题出在这句tcgetattr(fd,&Opt);。错误内容如下


我分析可能的原因有几种:1、没有读写串口权限。但是我直接搞了chmod 777 给串口文件,而且fd的值不是-1.所以这种可能性应该没有。2、tcgetattr用到库。因为之前我做过一个串口的测试,当时只用C语言,arm-none-linux-gnueabi-gcc comtest.c -o comtest -static -march=armv4t 编译的,操作串口是没有任何问题的。。我在想是不是因为JNI用到了动态编译,可能在android平台动态链接是出现问题。但是我看到网上介绍android其实是有C库的,而且,上面的错误提示显示的找不到是HardwareControl。
特此向大家求教,万分感谢!