Android2.3.4开放串口权限接口

        最近一个客户要求我们的BSP能提供串口和GPIO控制的接口,以便他们的APK调用。作用是可以在我们的手机模块板上利用硬件的串口接口接到外接模块上,然后通过自己开发的应用程序打开串口与外部模块进行通信。这样,可以灵活的配置各种串口接口的应用模块。如RFID设备、GPS设备等。满足某些特种行业的专业要求。

        本身这个功能不是我实现的,结果因为实现者的离职,而且临时有个应用要立即实现。我就被抓壮丁了。我一个人搞不定,把另一个高手拉着一起整。最开始的故障现象是我们接口定义的传入数据为char数组,而由于java对字符数组按照unicode方式处理的。而对方模块是用字节流格式。则需要修改接口参数类型。开始我想的很简单,直接在声明中将char换成了byte类型,编译也通过了。将so文件发给对方,结果说导入库文件失败,找不到指定类型的接口。排除了编译故障后,同事告诉我在method数组中也要修改参数类型简写类型。这是之前我不曾注意的关键点。修改后解决了该问题。

        另外一个大问题就是,应用给模块发串口数据时没有响应,收不到任何数据。测试apk读数据时,开始也是收不到数据,但是当发送一定量数据后就可以正常收到数据了。这一点也十分奇怪。因为对方发现是开始发送若干条GPS格式数据后,就能正常接收数据了。所以我的第一个念头:是否是GPS服务有关联。经过反复排查发现,这与GPS模块每一偶必然联系。因为即使我发送其他无意义的数据达到一定量,接收也能正常。但是,如果将对方的测试模块换成我们自己的3G模块,通过串口发送指令则能立即响应。高手就是高手,他推断可能与串口硬件电压匹配有关,但对方无法提供模块的电压规范说明,所以目前为止暂时没有最终结论。这暂且不表,下面就现有问题如何处理?考虑到对方模块的工作机制肯定是交互式的,而串口工作是必须apk接收一定数据量的串口数据,后面才能正常工作。那么,我们的解决思路就是循环调用模块的串口初始化指令,然后利用模块对初始化指令的不断响应数据来构造这个一定量的串口回应数据。当累计到所需要的数据量后,后面串口通信就正常进行了。经过几次测试,发现这个偏门的确可行。为了紧急事情的顺利进行,只能在特殊时期用特殊方式处理了。期望这个捞偏门能暂时应付这个差事。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值