android modbus RTU jssc连接

        前段时间帮朋友弄了一套Android自动售卖机的App,主要工作流程就是用户在自动售卖机的屏幕(App)上点击物品,然后App控制工控主机来控制售货机电控执行动作,将货物吐出来。

这里主要就记录一下如何让Android和工控主机连接起来,在百度,谷歌,github搜了很久,没有符合我的。

我主要是用到modbus rtu通讯协议,在github找到一个modbus rtu的但是就是连接不上工控主机,最后发现他的代码是不仅仅有java还有.so文件这时候我就感觉java如果想和工控主机连接,还是得底层C,于是我找到他们是通过jssc连接的,就去github找到了jssc原版的.h和.c文件,然后将这两个文件编译成.so文件,通过调用.so文件暴露出来的接口即可实现与Android与工控主机连接。

1.1这里有三个文件,把这三个文件放入jni文件夹中,然后进jssc_SerialNativeInterface.h,将所有 Java_jssc_SerialNativeInterface改成 Java_你的主包名_jssc_SerialNativeInterface;

  1.2进jssc.cpp,将所有 Java_jssc_SerialNativeInterface改成 Java_你的主包名_jssc_SerialNativeInterface且将#include "../jssc_SerialNativeInterface.h"改成"#include "jssc_SerialNativeInterface.h"";

具体怎么编译看这里:如何编译.so

下载.h和.c的的github连接:这里下载jssc.h和jssc.cpp

编译之后,还需要有一些java代码来调用这个.so,但是jssc官方demo也太简单了,而且没有任何分装,于是我在网上找到了一套很完美的demo,经过修改和编译过的.so完美匹配,并且在MainActivity中写好了几个常用的方法,例如配置modbus,读串口,写串口等,文章最后有github链接。

当你自己编译之后,如果出现:

1.找不到native方法,那就重新研究一下1.1和1.2,肯定是包名没修改好,细心修改。

2. cannot locatesymbol "tcgetattr" referenced by "xxx",这是因为ndk在android发展过程中出现了一次很大的改变,tcgetattr 被删掉了。不要怕,这个库文件我已经有提供,将其丢进jni文件夹下即可。

示例代码,点击下载,麻烦star:示例代码里面有termios.h文件

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,678评论 25 708
  • 有位小学同学,毕业后10年未曾见面,无意中加了微信。寒暄几句,便是各种其他同学混得好,自己好像没有什么出息的口气。...
    小七流年阅读 2,145评论 4 4
  • 人生就像骑单车想保持平衡就得往前行 人生不能像城市单车谁扫码都可以骑(欺)不如上把锁 人生没有不老的誓言人生没有不...
    豫视西影阅读 546评论 1 4
  • 穿过熙攘的人群 手中捧着抱来的猫咪 走在梵高的街道 一首Berlin跟随着我 老旧的城市 老旧的记忆 回忆挥着漫长...
    麾毛杆儿阅读 170评论 0 1
  • 平常身体平常心, 一颗红心照万民。 众志诚城千层浪, 载舟覆舟易来往。 丁酉年十月十四日安宁下麒麟
    海步多阅读 276评论 1 18