android modbus 串口,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"";

7af18e553c4d

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

编译之后,还需要有一些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文件夹下即可。

MODBUS TCP是一种基于TCP/IP协议的Modbus通信方式,它将传统的Modbus串行通信转换为基于以太网的通信。在Modbus TCP中,主/从设备演变为客户端/服务器端设备,即客户端相当于主站设备,服务器端相当于从站设备。Modbus TCP/IP服务器端通常使用端口502作为接收报文的端口。 在Java中,有多个库可以用于实现MODBUS TCP通信,如下所示: 1. Jamod:Jamod是一个Java Modbus库,由Dieter Wimberger实施。它提供了Modbus主站和从站的实现,支持ASCII,RTU,TCP和UDP传输。你可以使用Jamod来创建具有Modbus TCP功能的Java应用程序。 2. ModbusPal:ModbusPal是一个正在进行的Java项目,用于创建逼真的Modbus从站模拟器。它可以使用预定义的数学函数和/或Python脚本来动态生成寄存器值。ModbusPal依赖于RxTx进行串行通信。 3. Modbus4J:Modbus4J是一个由Serotonin Software用Java编写的高性能且易于使用的Modbus协议实现。它支持ASCII,RTU,TCP和UDP传输,并可以作为从站或主站使用。Modbus4J还提供了自动请求分区、响应数据类型解析和节点扫描等功能。 4. JLibModbus:JLibModbus是Java语言中Modbus协议的一种实现。它使用jSSC和RXTX库进行通过串行端口进行通信。JLibModbus是一个经过积极测试和改进的项目。 以上是一些常用的Java实现MODBUS TCP的库,你可以根据自己的需求选择合适的库来实现MODBUS TCP通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值