cordova插件开发(引用第三方jar包) 您所在的位置:网站首页 office插件开发第三方 cordova插件开发(引用第三方jar包)

cordova插件开发(引用第三方jar包)

2024-07-05 10:06| 来源: 网络整理| 查看: 265

本文以modbus为例。

1.新建项目,添加android平台。

plugman create --name [插件名] --plugin_id [插件id] --plugin_version [插件版本] plugman create --name testPluginDemo --plugin_id cordova-plugin-testPlugin --plugin_version 1.0.0 plugman platform add --platform_name android

2.在plugin.xml文件中添加如下内容:

testPluginDemo

3.项目中引入modbus4j.jar,在src/android目录下

testPluginDemo.js内容如下:

var exec = require('cordova/exec'); //exports.showToast 的showToast为插件安装后 js调用的方法名,其中传递的参数可以为任意多个 exports.modbus = function(arg0,success,error){ // success error 为成功回调 失败回调 // testPluginDemo 为 plugin.xml中配置的feature的name名 // 参数中的"showToast" 给testPluginDemo.java 判断的action参数 //[arg0] 参数是一个 //arg0 参数是多个 传参这样传过来["a",1] //[] 无参数 exec(success,error,'testPluginDemo','modbus',arg0); }

 

4. testPluginDemo.java内容如下

//注意:包名必须写,不写不能正常调用 package org.apache.cordova.testPluginDemo; import org.apache.cordova.CordovaPlugin; import org.apache.cordova.CallbackContext; import android.content.Context; import android.util.Log; import org.apache.cordova.CordovaInterface; import org.apache.cordova.CordovaPlugin; import org.apache.cordova.CallbackContext; import org.apache.cordova.CordovaWebView; import org.apache.cordova.PluginResult; import com.serotonin.modbus4j.ModbusMaster; import com.serotonin.modbus4j.exception.ModbusInitException; import com.serotonin.modbus4j.exception.ModbusTransportException; import com.serotonin.modbus4j.exception.ErrorResponseException; /** * This class echoes a string called from JavaScript. */ public class testPluginDemo extends CordovaPlugin { @Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { if (action.equals("modbus")) { this.modbus(callbackContext); return true; } return false; } public ModbusMaster master; private void modbus(CallbackContext callbackContext) { try { master = Modbus4jUtils.getMaster("192.168.10.71", 502); Boolean result = Modbus4jUtils.readCoilStatus(master, 1, 0); callbackContext.success("modbus结果(成功):" + String.valueOf(result)); } catch (ModbusInitException e) { e.printStackTrace(); }catch (ModbusTransportException e) { e.printStackTrace(); } catch (ErrorResponseException e) { e.printStackTrace(); } } }

 5.Modbus4jUtils.java 内容如下:

package org.apache.cordova.testPluginDemo; import com.serotonin.modbus4j.BatchRead; import com.serotonin.modbus4j.BatchResults; import com.serotonin.modbus4j.ModbusFactory; import com.serotonin.modbus4j.ModbusMaster; import com.serotonin.modbus4j.code.DataType; import com.serotonin.modbus4j.exception.ErrorResponseException; import com.serotonin.modbus4j.exception.ModbusInitException; import com.serotonin.modbus4j.exception.ModbusTransportException; import com.serotonin.modbus4j.ip.IpParameters; import com.serotonin.modbus4j.locator.BaseLocator; import java.util.ArrayList; public class Modbus4jUtils { /** * 工厂。 */ static ModbusFactory modbusFactory; static { if (modbusFactory == null) { modbusFactory = new ModbusFactory(); } } /** * 获取master * * @return * @throws ModbusInitException */ public static ModbusMaster getMaster(String host, int port) throws ModbusInitException { IpParameters params = new IpParameters(); params.setHost(host); params.setPort(port); // // modbusFactory.createRtuMaster(wapper); //RTU 协议 // modbusFactory.createUdpMaster(params);//UDP 协议 // modbusFactory.createAsciiMaster(wrapper);//ASCII 协议 ModbusMaster master = modbusFactory.createTcpMaster(params, false);// TCP 协议 master.init(); return master; } /** * 读取[01 Coil Status 0x]类型 开关数据 * * @param slaveId slaveId * @param offset 位置 * @return 读取值 * @throws ModbusTransportException 异常 * @throws ErrorResponseException 异常 * @throws ModbusInitException 异常 */ public static Boolean readCoilStatus(ModbusMaster master, int slaveId, int offset) throws ModbusTransportException, ErrorResponseException, ModbusInitException { // 01 Coil Status BaseLocator loc = BaseLocator.coilStatus(slaveId, offset); Boolean value = master.getValue(loc); return value; } /** * 读取[02 Input Status 1x]类型 开关数据 * * @param slaveId * @param offset * @return * @throws ModbusTransportException * @throws ErrorResponseException * @throws ModbusInitException */ public static Boolean readInputStatus(ModbusMaster master, int slaveId, int offset) throws ModbusTransportException, ErrorResponseException { // 02 Input Status BaseLocator loc = BaseLocator.inputStatus(slaveId, offset); Boolean value = master.getValue(loc); return value; } /** * 读取[03 Holding Register类型 2x]模拟量数据 * * @param slaveId slave Id * @param offset 位置 * @param dataType 数据类型,来自com.serotonin.modbus4j.code.DataType * @return * @throws ModbusTransportException 异常 * @throws ErrorResponseException 异常 * @throws ModbusInitException 异常 */ public static Number readHoldingRegister(ModbusMaster master, int slaveId, int offset, int dataType) throws ModbusTransportException, ErrorResponseException, ModbusInitException { // 03 Holding Register类型数据读取 BaseLocator loc = BaseLocator.holdingRegister(slaveId, offset, dataType); Number value = master.getValue(loc); return value; } /** * 读取[04 Input Registers 3x]类型 模拟量数据 * * @param slaveId slaveId * @param offset 位置 * @param dataType 数据类型,来自com.serotonin.modbus4j.code.DataType * @return 返回结果 * @throws ModbusTransportException 异常 * @throws ErrorResponseException 异常 * @throws ModbusInitException 异常 */ public static Number readInputRegisters(ModbusMaster master, int slaveId, int offset, int dataType) throws ModbusTransportException, ErrorResponseException, ModbusInitException { // 04 Input Registers类型数据读取 BaseLocator loc = BaseLocator.inputRegister(slaveId, offset, dataType); Number value = master.getValue(loc); return value; } /** * 批量读取使用方法 * * @throws ModbusTransportException * @throws ErrorResponseException * @throws ModbusInitException */ public static void batchRead(ModbusMaster master, ArrayList data) throws ModbusTransportException, ErrorResponseException, ModbusInitException { BatchRead batch = new BatchRead(); batch.addLocator(0, BaseLocator.holdingRegister(1, 1, DataType.FOUR_BYTE_FLOAT)); batch.addLocator(1, BaseLocator.inputStatus(1, 0)); batch.setContiguousRequests(false); BatchResults results = master.send(batch); System.out.println(results.getValue(0)); System.out.println(results.getValue(1)); } }

注:

要引用org.apache.commons.lang3包

    org.apache.commons     commons-lang3     3.10 否则调用modbus读取(03)方法,会出现org.apache.commons.lang3.ArrayUtils 找不到异常。

 

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有