diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 00000000..fb7f4a8a --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 00000000..ce86a83a --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 00000000..e9a58ca7 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023_12_4_14_14_[Changes]/shelved.patch b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023_12_4_14_14_[Changes]/shelved.patch new file mode 100644 index 00000000..d21148e1 --- /dev/null +++ b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023_12_4_14_14_[Changes]/shelved.patch @@ -0,0 +1,71 @@ +Index: app/src/main/java/com/bonait/bnframework/business/MainInit.java +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP +<+>package com.bonait.bnframework.business;\r\n\r\nimport android.app.Activity;\r\nimport android.app.Application;\r\nimport android.util.Log;\r\n\r\nimport com.bonait.bnframework.BuildConfig;\r\nimport com.bonait.bnframework.common.constant.ConfigName;\r\nimport com.bonait.bnframework.common.constant.Constants;\r\nimport com.bonait.bnframework.common.constant.DataBus;\r\nimport com.bonait.bnframework.common.db.QueryDB;\r\nimport com.bonait.bnframework.common.db.file.DBHelper;\r\nimport com.bonait.bnframework.common.db.mode.BPA_ALERTLOG;\r\nimport com.bonait.bnframework.common.db.mode.BPA_CLOUDDATA;\r\nimport com.bonait.bnframework.common.db.mode.BPA_GOODS;\r\nimport com.bonait.bnframework.common.db.mode.BPA_GOODSRECIPE;\r\nimport com.bonait.bnframework.common.db.mode.BPA_LOG;\r\nimport com.bonait.bnframework.common.db.mode.BPA_PLCADDRESS;\r\nimport com.bonait.bnframework.common.db.mode.BPA_SILOS;\r\nimport com.bonait.bnframework.common.db.mode.BPA_SILOSANDMATERIAL;\r\nimport com.bonait.bnframework.common.db.mode.BPA_USER;\r\nimport com.bonait.bnframework.common.db.res.AlertLogEnum;\r\nimport com.bonait.bnframework.common.db.res.ResGoodsRecipe;\r\nimport com.bonait.bnframework.common.db.res.UserLogEnum;\r\nimport com.bonait.bnframework.common.helper.CrashHandler;\r\nimport com.bonait.bnframework.common.helper.I.IMessageLogNotify;\r\nimport com.bonait.bnframework.common.helper.MessageLog;\r\nimport com.bonait.bnframework.common.helper.SdCart;\r\nimport com.bonait.bnframework.common.modbus.ModbusTcpHelper;\r\nimport com.bonait.bnframework.common.notification.MainNotification;\r\nimport com.bonait.bnframework.common.utils.AppUtils;\r\nimport com.bonait.bnframework.common.utils.NetworkUtils;\r\nimport com.bonait.bnframework.common.utils.PreferenceUtils;\r\nimport com.bonait.bnframework.common.utils.ToastUtils;\r\nimport com.bonait.bnframework.common.utils.WifiInterceptor;\r\nimport com.bonait.bnframework.manager.ActivityLifecycleManager;\r\nimport com.lzy.okgo.OkGo;\r\nimport com.lzy.okgo.cache.CacheEntity;\r\nimport com.lzy.okgo.cache.CacheMode;\r\nimport com.lzy.okgo.interceptor.HttpLoggingInterceptor;\r\nimport com.orhanobut.logger.AndroidLogAdapter;\r\nimport com.orhanobut.logger.FormatStrategy;\r\nimport com.orhanobut.logger.Logger;\r\nimport com.orhanobut.logger.PrettyFormatStrategy;\r\nimport com.qmuiteam.qmui.arch.QMUISwipeBackActivityManager;\r\n\r\nimport org.litepal.LitePal;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.concurrent.TimeUnit;\r\nimport java.util.logging.Level;\r\n\r\nimport okhttp3.OkHttpClient;\r\n\r\npublic class MainInit {\r\n /**\r\n * 初始化\r\n * @param app\r\n */\r\n public static void Init(Application app)\r\n {\r\n //0.全局异常捕获,保存为SD卡本级目录 crash\r\n CrashHandler.getInstance().init(app);\r\n\r\n //1.设置程序active,初始化Main函数进程,初始化消息日志\r\n InitMsgLog();\r\n\r\n //2.初始化SD卡,数据库DB\r\n SdCart.getInstance().initSD();\r\n\r\n //4.初始化Main,并且增加本地图片库\r\n ConfigData.getInstance().AddImage(app);\r\n\r\n // activity生命周期管理\r\n ActivityLifecycleManager.get().init(app);\r\n\r\n // QMUI 框架初始化\r\n QMUISwipeBackActivityManager.init(app);\r\n\r\n // LitePal 数据库初始化\r\n LitePal.initialize(app);\r\n\r\n // 全局配置OkGo\r\n initOkGo(app);\r\n\r\n // 配置sharedPreferences\r\n PreferenceUtils.initPreference(app, AppUtils.getAppName(app), Activity.MODE_PRIVATE);\r\n\r\n // 初始化通知栏消息渠道\r\n MainNotification.initNotificationChannel(app);\r\n\r\n // 内存泄漏检测\r\n initLeakCanary(false);\r\n\r\n // Log日志打印框架\r\n initLogCat();\r\n\r\n // SmartShow Toast框架,暂时不用,先使用ToastUtils工具类的\r\n //SmartShow.init(this);\r\n\r\n //初始化DB数据\r\n InitDBdata();\r\n //ConfigData.getInstance().LoadingCloud();//加载云端数据\r\n\r\n DataBus.getInstance().GetTodayNoMake();\r\n\r\n //设置连接到有线网络\r\n // NetworkUtils.connetEnternet(app);\r\n }\r\n\r\n\r\n //========================================================================//\r\n public static void text()\r\n {\r\n String id=\"38f0a737-2476-40d8-a7d8-28ff7796e9d2\";\r\n BPA_GOODS gd=QueryDB.GetGoodsId(id);\r\n ArrayList PF=QueryDB.GetGoodsSrecipeID(id);\r\n ArrayList goods= QueryDB.GetGoodsALL();\r\n for (BPA_GOODS good:goods)\r\n {\r\n if(!good.id.equals(id))\r\n {\r\n for (BPA_GOODSRECIPE m:PF)\r\n {\r\n m.id=java.util.UUID.randomUUID().toString();\r\n m.goodsID=good.id;\r\n QueryDB.AddGoodsSrecipe(m);\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n }\r\n\r\n /**\r\n * 根据第一个配方重新写配方\r\n */\r\n public static void cx_cp()\r\n {\r\n ArrayList goods= QueryDB.GetGoodsALL();\r\n //38f0a737-2476-40d8-a7d8-28ff7796e9d2 鱼香肉丝\r\n //b414cef3-a315-4841-954a-abee17af02d6 重游发财\r\n\r\n\r\n String ydrs=\"dc2136ad-ee32-48c1-8077-afbdb80af9a3\";\r\n ArrayList ydrs_pf=QueryDB.GetGoodsSrecipeID(ydrs);\r\n\r\n\r\n String hc=\"b414cef3-a315-4841-954a-abee17af02d6\";\r\n ArrayList hc_pf=QueryDB.GetGoodsSrecipeID(hc);\r\n\r\n ArrayList rec= QueryDB.GetGoodsSrecipeALL();\r\n for (BPA_GOODSRECIPE pf:rec)\r\n {\r\n QueryDB.DeleteGoodsSrecipe(pf);\r\n }\r\n for (BPA_GOODS good:goods)\r\n {\r\n if(good.sort<=30)\r\n {\r\n for (BPA_GOODSRECIPE m:ydrs_pf)\r\n {\r\n m.id=java.util.UUID.randomUUID().toString();\r\n m.goodsID=good.id;\r\n QueryDB.AddGoodsSrecipe(m);\r\n }\r\n }else\r\n {\r\n for (BPA_GOODSRECIPE m:hc_pf)\r\n {\r\n m.id=java.util.UUID.randomUUID().toString();\r\n m.goodsID=good.id;\r\n QueryDB.AddGoodsSrecipe(m);\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * 初始化数据库数据(默认数据)\r\n */\r\n public static void InitDBdata() {\r\n //1.没有用户数据 默认写一个admin\r\n if (QueryDB.GetUserALL().size() <= 0) {\r\n BPA_USER user = new BPA_USER();\r\n user.id = \"20230415-fyf\";\r\n user.name = \"管理员\";\r\n user.account = \"admin\";\r\n user.pass = \"123456\";\r\n user.deviceID = ConfigName.getInstance().DeviceId;\r\n user.userID = \"20230415-fyf\";\r\n user.exp = \"管理员\";\r\n QueryDB.AddUser(user);\r\n\r\n ConfigData.getInstance().RevertPLCProcess();\r\n }\r\n }\r\n /**\r\n * 删除表-重新生成新表\r\n */\r\n public static void DBdelete()\r\n {\r\n// DBHelper.getInstance(this).DeleteCreateTables(BPA_CLOUDDATA.class,null);\r\n// DBHelper.getInstance(this).DeleteCreateTables(BPA_PLCADDRESS.class,null);\r\n }\r\n\r\n /**\r\n * 初始化消息日志接收打印\r\n */\r\n public static void InitMsgLog(){\r\n MessageLog.MsgNotify = new IMessageLogNotify() {\r\n @Override\r\n public void ErrorMsg(String msg) {\r\n if(msg.contains(\"msg:com.serotonin.modbus4j.exception\"))\r\n {\r\n ModbusTcpHelper.get().release();//释放modbus\r\n ConfigName.getInstance().PlcIsConnect=false;\r\n\r\n BPA_ALERTLOG log = new BPA_ALERTLOG();\r\n log.userID = ConfigName.getInstance().user.userID;\r\n log.type=4;\r\n log.text = msg+\"程序断开PLC,准备重连机制...\";\r\n QueryDB.AddAlertlog(log);\r\n }\r\n }\r\n @Override\r\n public void InfoMsg(String msg) {\r\n Log.i(\"Info\", msg);\r\n\r\n }\r\n @Override\r\n public void WarnMsg(String msg) {\r\n Log.w(\"Warn\", msg);\r\n }\r\n @Override\r\n public void UserMsg(UserLogEnum type, String msg) {\r\n BPA_LOG log = new BPA_LOG();\r\n log.userID = ConfigName.getInstance().user.userID;\r\n ToastUtils.info(msg);\r\n switch (type.toString())\r\n {\r\n case \"登录日志\":log.type=1;\r\n break;\r\n case \"角色操作日志\":log.type=2;\r\n break;\r\n case \"数据接收\":log.type=3;\r\n break;\r\n case \"上传日志\":log.type=4;\r\n break;\r\n case \"订单处理日志\":log.type=5;\r\n break;\r\n }\r\n log.text = msg;\r\n QueryDB.Addlog(log);\r\n }\r\n\r\n @Override\r\n public void AlertMsg(AlertLogEnum type, String msg) {\r\n BPA_ALERTLOG log = new BPA_ALERTLOG();\r\n log.userID = ConfigName.getInstance().user.userID;\r\n switch (type.toString())\r\n {\r\n case \"异常订单未制作日志\":log.type=1;\r\n break;\r\n case \"料仓缺料日志\":log.type=2;\r\n break;\r\n case \"传感器异常日志\":log.type=3;\r\n break;\r\n case \"其他\":log.type=4;\r\n break;\r\n }\r\n log.text = msg;\r\n\r\n QueryDB.AddAlertlog(log);\r\n }\r\n };\r\n }\r\n /**\r\n * 内存泄漏检测,根据flag来判断要不要初始化\r\n */\r\n private static void initLeakCanary(boolean flag) {\r\n if (flag) {\r\n // leak 内存检测注册\r\n// if (LeakCanary.isInAnalyzerProcess(this)) {\r\n// return;\r\n// }\r\n// LeakCanary.install(this);\r\n }\r\n }\r\n\r\n /**\r\n * 初始化log日志框架\r\n */\r\n private static void initLogCat() {\r\n FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()\r\n .showThreadInfo(false) // (可选)是否显示线程信息。 默认值为true\r\n .methodCount(2) // (可选)要显示的方法行数。 默认2\r\n .build();\r\n Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy) {\r\n @Override\r\n public boolean isLoggable(int priority, String tag) {\r\n return BuildConfig.DEBUG;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * 配置OkGo\r\n */\r\n private static void initOkGo(Application app) {\r\n\r\n //---------这里给出的是示例代码,告诉你可以这么传,实际使用的时候,根据需要传,不需要就不传-------------//\r\n /*HttpHeaders headers = new HttpHeaders();\r\n headers.put(\"commonHeaderKey1\", \"commonHeaderValue1\"); //header不支持中文,不允许有特殊字符\r\n headers.put(\"commonHeaderKey2\", \"commonHeaderValue2\");\r\n HttpParams params = new HttpParams();\r\n params.put(\"commonParamsKey1\", \"commonParamsValue1\"); //param支持中文,直接传,不要自己编码\r\n params.put(\"commonParamsKey2\", \"这里支持中文参数\");*/\r\n //----------------------------------------------------------------------------------------//\r\n\r\n OkHttpClient.Builder builder = new OkHttpClient.Builder();\r\n\r\n //log相关\r\n HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(\"OkGo\");\r\n //log打印级别,决定了log显示的详细程度\r\n loggingInterceptor.setPrintLevel(HttpLoggingInterceptor.Level.BODY);\r\n //log颜色级别,决定了log在控制台显示的颜色\r\n loggingInterceptor.setColorLevel(Level.INFO);\r\n //添加OkGo默认debug日志\r\n builder.addInterceptor(loggingInterceptor);\r\n //builder.addInterceptor(new WifiInterceptor(app));\r\n //-------------------------配置超时时间,默认60000ms,60s------------------------------//\r\n //OkGo.DEFAULT_MILLISECONDS\r\n //全局的连接超时时间\r\n builder.connectTimeout(Constants.CONNECT_TIME_OUT, TimeUnit.MILLISECONDS);\r\n //全局的读取超时时间\r\n builder.readTimeout(Constants.CONNECT_TIME_OUT, TimeUnit.MILLISECONDS);\r\n //全局的写入超时时间\r\n builder.writeTimeout(OkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS);\r\n OkGo.getInstance().init(app) //必须调用初始化\r\n .setOkHttpClient(builder.build()) //建议设置OkHttpClient,不设置将使用默认的\r\n .setCacheMode(CacheMode.NO_CACHE) //全局统一缓存模式,默认不使用缓存,可以不传\r\n .setCacheTime(CacheEntity.CACHE_NEVER_EXPIRE) //全局统一缓存时间,默认永不过期,可以不传\r\n .setRetryCount(0); //全局统一超时重连次数,默认为三次,那么最差的情况会请求4次(一次原始请求,三次重连请求),不需要可以设置为0\r\n //.addCommonParams(params); //全局公共参数\r\n\r\n }\r\n}\r\n +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/java/com/bonait/bnframework/business/MainInit.java b/app/src/main/java/com/bonait/bnframework/business/MainInit.java +--- a/app/src/main/java/com/bonait/bnframework/business/MainInit.java (revision 1e67707b12981e019b49f3fb3f1b772d4a8d1662) ++++ b/app/src/main/java/com/bonait/bnframework/business/MainInit.java (date 1701246282625) +@@ -9,30 +9,21 @@ + import com.bonait.bnframework.common.constant.Constants; + import com.bonait.bnframework.common.constant.DataBus; + import com.bonait.bnframework.common.db.QueryDB; +-import com.bonait.bnframework.common.db.file.DBHelper; + import com.bonait.bnframework.common.db.mode.BPA_ALERTLOG; +-import com.bonait.bnframework.common.db.mode.BPA_CLOUDDATA; + import com.bonait.bnframework.common.db.mode.BPA_GOODS; + import com.bonait.bnframework.common.db.mode.BPA_GOODSRECIPE; + import com.bonait.bnframework.common.db.mode.BPA_LOG; +-import com.bonait.bnframework.common.db.mode.BPA_PLCADDRESS; +-import com.bonait.bnframework.common.db.mode.BPA_SILOS; +-import com.bonait.bnframework.common.db.mode.BPA_SILOSANDMATERIAL; + import com.bonait.bnframework.common.db.mode.BPA_USER; + import com.bonait.bnframework.common.db.res.AlertLogEnum; +-import com.bonait.bnframework.common.db.res.ResGoodsRecipe; + import com.bonait.bnframework.common.db.res.UserLogEnum; + import com.bonait.bnframework.common.helper.CrashHandler; + import com.bonait.bnframework.common.helper.I.IMessageLogNotify; + import com.bonait.bnframework.common.helper.MessageLog; + import com.bonait.bnframework.common.helper.SdCart; +-import com.bonait.bnframework.common.modbus.ModbusTcpHelper; + import com.bonait.bnframework.common.notification.MainNotification; + import com.bonait.bnframework.common.utils.AppUtils; +-import com.bonait.bnframework.common.utils.NetworkUtils; + import com.bonait.bnframework.common.utils.PreferenceUtils; + import com.bonait.bnframework.common.utils.ToastUtils; +-import com.bonait.bnframework.common.utils.WifiInterceptor; + import com.bonait.bnframework.manager.ActivityLifecycleManager; + import com.lzy.okgo.OkGo; + import com.lzy.okgo.cache.CacheEntity; +@@ -215,8 +206,8 @@ + public void ErrorMsg(String msg) { + if(msg.contains("msg:com.serotonin.modbus4j.exception")) + { +- ModbusTcpHelper.get().release();//释放modbus +- ConfigName.getInstance().PlcIsConnect=false; ++ //ModbusTcpHelper.get().release();//释放modbus ++ //ConfigName.getInstance().PlcIsConnect=false; + + BPA_ALERTLOG log = new BPA_ALERTLOG(); + log.userID = ConfigName.getInstance().user.userID; +Index: app/src/main/java/com/bonait/bnframework/common/modbus/ModbusRTUServer.java +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP +<+>package com.bonait.bnframework.common.modbus;\r\n\r\nimport com.bonait.bnframework.business.ConfigData;\r\nimport com.bonait.bnframework.common.constant.ConfigName;\r\nimport com.bonait.bnframework.common.helper.DataFormat;\r\nimport com.bonait.bnframework.common.helper.I.IReadCallBack;\r\nimport com.bonait.bnframework.common.helper.I.IWriteCallBack;\r\nimport com.bonait.bnframework.common.helper.MessageLog;\r\nimport com.licheedev.modbus4android.ModbusCallback;\r\nimport com.licheedev.modbus4android.ModbusParam;\r\nimport com.licheedev.modbus4android.ModbusRespException;\r\nimport com.licheedev.modbus4android.param.SerialParam;\r\nimport com.serotonin.modbus4j.ModbusMaster;\r\nimport com.serotonin.modbus4j.exception.ModbusInitException;\r\nimport com.serotonin.modbus4j.exception.ModbusTransportException;\r\nimport com.serotonin.modbus4j.msg.ReadCoilsResponse;\r\nimport com.serotonin.modbus4j.msg.ReadHoldingRegistersResponse;\r\n\r\nimport java.io.UnsupportedEncodingException;\r\nimport java.nio.ByteBuffer;\r\nimport java.util.Arrays;\r\nimport java.util.concurrent.ExecutionException;\r\n\r\npublic class ModbusRTUServer {\r\n //region 单例模式\r\n private static volatile ModbusRTUServer instance = null;\r\n\r\n public static ModbusRTUServer get() {\r\n ModbusRTUServer manager = instance;\r\n if (manager == null) {\r\n synchronized (ModbusRTUServer.class) {\r\n manager = instance;\r\n if (manager == null) {\r\n manager = new ModbusRTUServer();\r\n instance = manager;\r\n }\r\n }\r\n }\r\n return manager;\r\n }\r\n private ModbusRTUServer() {\r\n }\r\n //endregion\r\n\r\n\r\n static ModbusParam param;\r\n\r\n /**适用于三菱PLC,只有X,Y,M,D区*/\r\n public static int GetAddress(String address){\r\n if (address == null) return -1;\r\n address = address.toUpperCase().trim();\r\n\r\n try {\r\n if (address.length() < 2) return Integer.parseInt(address);\r\n\r\n String res = address.substring(1);\r\n if (res == null) return -1;\r\n\r\n int startAddress=Integer.parseInt(res) ;\r\n //如果是M区地址。\r\n if (address.contains(\"M\")) {\r\n return startAddress + 4000;\r\n } else if (address.contains(\"D\")) {\r\n return startAddress;\r\n }else if(address.contains(\"X\")){\r\n return Integer.parseInt(res,8);\r\n }else if(address.contains(\"Y\")){\r\n return Integer.parseInt(res,8)+300;\r\n }else{\r\n return Integer.parseInt(address);\r\n }\r\n } catch (Exception e) {\r\n return -1;\r\n }\r\n }\r\n\r\n\r\n /** 连接PLC*/\r\n public void ConnectPLC()\r\n {\r\n int baudRate=ConfigName.getInstance().SerialBaudRate;\r\n int dataBits=ConfigName.getInstance().SerialDataBits;\r\n int parity=ConfigName.getInstance().SerialParity;\r\n int stopBits=ConfigName.getInstance().SerialStopBits;\r\n //String com=\"COM0\";\r\n\r\n param = SerialParam.create(\"/dev/ttyCOM1\", baudRate) // 串口地址和波特率\r\n .setDataBits(dataBits) // 数据位\r\n .setParity(parity) // 校验位\r\n .setStopBits(stopBits) // 停止位\r\n .setTimeout(3000).setRetries(0); // 不重试\r\n\r\n ModbusTcpHelper.get().init(param, new ModbusCallback() {\r\n @Override\r\n public void onSuccess(ModbusMaster modbusMaster) {\r\n //ToastUtils.info(\"串口 [\"+com+\"] 连接成功\");\r\n\r\n //MessageLog.ShowInfo(\"串口 [\"+com+\"] 连接成功\");\r\n ConfigName.getInstance().SerialIsConnect = true;\r\n ConfigData.getInstance().PLC_Init();\r\n }\r\n\r\n @Override\r\n public void onFailure(Throwable tr) {\r\n ConfigName.getInstance().SerialIsConnect = false;\r\n //ToastUtils.info(\"串口 [\"+com+\"] 连接失败:\" + tr.getMessage());\r\n //MessageLog.ShowError(\"串口 [\"+com+\"] 连接失败:\" + tr.getMessage());\r\n }\r\n @Override\r\n public void onFinally() {\r\n }\r\n });\r\n }\r\n\r\n\r\n //region 数据类型转换\r\n private Float BytesToFloat(byte[] buffers, DataFormat df) {\r\n if (buffers.length == 4) {\r\n byte[] bytes = new byte[4];\r\n if (df == DataFormat.ABCD) {\r\n bytes[0] = buffers[3];\r\n bytes[1] = buffers[2];\r\n bytes[2] = buffers[1];\r\n bytes[3] = buffers[0];\r\n } else if (df == DataFormat.CDAB) {\r\n bytes[0] = buffers[1];\r\n bytes[1] = buffers[0];\r\n bytes[2] = buffers[3];\r\n bytes[3] = buffers[2];\r\n } else if (df == DataFormat.BADC) {\r\n bytes[0] = buffers[2];\r\n bytes[1] = buffers[3];\r\n bytes[2] = buffers[0];\r\n bytes[3] = buffers[1];\r\n } else if (df == DataFormat.DCBA) {\r\n bytes[0] = buffers[0];\r\n bytes[1] = buffers[1];\r\n bytes[2] = buffers[2];\r\n bytes[3] = buffers[3];\r\n }\r\n return ByteBuffer.wrap(bytes).getFloat();\r\n }\r\n return 0.0f;\r\n }\r\n\r\n private Integer BytesToInt(byte[] buffers, DataFormat df) {\r\n if (buffers.length == 4) {\r\n byte[] bytes = new byte[4];\r\n if (df == DataFormat.ABCD) {\r\n bytes[0] = buffers[3];\r\n bytes[1] = buffers[2];\r\n bytes[2] = buffers[1];\r\n bytes[3] = buffers[0];\r\n } else if (df == DataFormat.CDAB) {\r\n bytes[0] = buffers[1];\r\n bytes[1] = buffers[0];\r\n bytes[2] = buffers[3];\r\n bytes[3] = buffers[2];\r\n } else if (df == DataFormat.BADC) {\r\n bytes[0] = buffers[2];\r\n bytes[1] = buffers[3];\r\n bytes[2] = buffers[0];\r\n bytes[3] = buffers[1];\r\n } else if (df == DataFormat.DCBA) {\r\n bytes[0] = buffers[0];\r\n bytes[1] = buffers[1];\r\n bytes[2] = buffers[2];\r\n bytes[3] = buffers[3];\r\n }\r\n return ByteBuffer.wrap(bytes).getInt();\r\n }\r\n return 0;\r\n }\r\n\r\n private byte[] IntToByte(int number) {\r\n int temp = number;\r\n byte[] b = new byte[4];\r\n for (int i = 0; i < b.length; i++) {\r\n b[i] = new Integer(temp & 0xff).byteValue();// 将最低位保存在最低位\r\n temp = temp >> 8; // 向右移8位\r\n }\r\n return b;\r\n }\r\n\r\n private short[] IntToShorts(int value) {\r\n short[] res = new short[2];\r\n int temp = value;\r\n byte[] b = new byte[4];\r\n for (int i = 0; i < b.length; i++) {\r\n b[i] = new Integer(temp & 0xff).byteValue();// 将最低位保存在最低位\r\n temp = temp >> 8; // 向右移8位\r\n }\r\n for (int i = 0; i < res.length; i++) {\r\n short s0 = (short) (b[i * 2] & 0xff);// 最低位\r\n short s1 = (short) (b[i * 2 + 1] & 0xff);\r\n s1 <<= 8;\r\n res[i] = (short) (s0 | s1);\r\n }\r\n return res;\r\n }\r\n\r\n public static String GetString(short[] src, int start, int len) throws UnsupportedEncodingException {\r\n short[] temp = new short[len];\r\n for (int i = 0; i < len; i++) {\r\n temp[i] = src[i + start];\r\n }\r\n byte[] bytesTemp = shorts2Bytes(temp);\r\n for (int i = 0; i < bytesTemp.length; i++) {\r\n byte b = bytesTemp[i];\r\n }\r\n String str = new String(bytesTemp, \"UTF-8\");\r\n return str;\r\n }\r\n\r\n public static byte[] shorts2Bytes(short[] data) {\r\n byte[] byteValue = new byte[data.length * 2];\r\n for (int i = 0; i < data.length; i++) {\r\n byteValue[i * 2] = (byte) (data[i] & 0xff);\r\n byteValue[i * 2 + 1] = (byte) ((data[i] & 0xff00) >> 8);\r\n }\r\n return byteValue;\r\n }\r\n //endregion\r\n\r\n //region 读取及写入方法\r\n\r\n /**写入字符串*/\r\n public void WriteString(int slaveAddress,String Address, int length, IWriteCallBack callback) {\r\n int add = GetAddress(Address);\r\n if (add < 0) return;\r\n short[] send = new short[length];\r\n for (short item : send) {\r\n item = 0;\r\n }\r\n try {\r\n ModbusTcpHelper.get().syncWriteRegisters(slaveAddress, add, send);\r\n if (callback != null)\r\n callback.onSuccess();\r\n } catch (InterruptedException e) {\r\n MessageLog.ShowError(\"WriteShort onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ExecutionException e) {\r\n MessageLog.ShowError(\"WriteShort onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ModbusTransportException e) {\r\n MessageLog.ShowError(\"WriteShort onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ModbusInitException e) {\r\n MessageLog.ShowError(\"WriteShort onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ModbusRespException e) {\r\n MessageLog.ShowError(\"WriteShort onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n }\r\n }\r\n\r\n /**写入字符串*/\r\n public void WriteString(int slaveAddress,int Address, short[] values, IWriteCallBack callback) {\r\n if (slaveAddress<0) return;\r\n if (Address < 0) return;\r\n if (values ==null || values.length==0) return;\r\n try {\r\n ModbusTcpHelper.get().syncWriteRegisters(slaveAddress, Address, values);\r\n if (callback != null)\r\n callback.onSuccess();\r\n } catch (InterruptedException e) {\r\n MessageLog.ShowError(\"WriteString onFailure,Address=\" + Address + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ExecutionException e) {\r\n MessageLog.ShowError(\"WriteString onFailure,Address=\" + Address + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ModbusTransportException e) {\r\n MessageLog.ShowError(\"WriteString onFailure,Address=\" + Address + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ModbusInitException e) {\r\n MessageLog.ShowError(\"WriteString onFailure,Address=\" + Address + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ModbusRespException e) {\r\n MessageLog.ShowError(\"WriteString onFailure,Address=\" + Address + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n }\r\n }\r\n\r\n\r\n /**根据地址批量读取16位寄存器*/\r\n public void ReadShorts(int slaveAddress,int Address, int length, IReadCallBack callback) {\r\n //int add = GetAddress(Address);\r\n if (Address < 0) return;\r\n try {\r\n ReadHoldingRegistersResponse res = ModbusTcpHelper.get()\r\n .syncReadHoldingRegisters(slaveAddress, Address, length);\r\n short[] data = res.getShortData();\r\n if (data.length == length) {\r\n if (callback != null) callback.onSuccess(data);\r\n }\r\n } catch (InterruptedException e) {\r\n MessageLog.ShowError(\"ReadShort onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n } catch (ExecutionException e) {\r\n MessageLog.ShowError(\"ReadShort onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n } catch (ModbusTransportException e) {\r\n MessageLog.ShowError(\"ReadShort onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n } catch (ModbusInitException e) {\r\n MessageLog.ShowError(\"ReadShort onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n } catch (ModbusRespException e) {\r\n MessageLog.ShowError(\"ReadShort onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n }\r\n }\r\n\r\n public void ReadBools(int slaveAddress,String Address, int length, IReadCallBack callback) {\r\n int add = GetAddress(Address);\r\n if (add < 0) return;\r\n try {\r\n ReadCoilsResponse res = ModbusTcpHelper.get()\r\n .syncReadCoil(slaveAddress, add, length);\r\n boolean[] data = res.getBooleanData();\r\n boolean[] result = Arrays.copyOfRange(data, 0, length);\r\n if (result.length == length) {\r\n if (callback != null) callback.onSuccess(result);\r\n }\r\n } catch (InterruptedException e) {\r\n MessageLog.ShowError(\"ReadBool onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n } catch (ExecutionException e) {\r\n MessageLog.ShowError(\"ReadBool onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n } catch (ModbusTransportException e) {\r\n MessageLog.ShowError(\"ReadBool onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n } catch (ModbusInitException e) {\r\n MessageLog.ShowError(\"ReadBool onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n } catch (ModbusRespException e) {\r\n MessageLog.ShowError(\"ReadBool onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n }catch (Exception e){\r\n MessageLog.ShowError(\"ReadBool onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n }\r\n }\r\n\r\n public void ReadFloats(int slaveAddress,int Address, int length, IReadCallBack callback) {\r\n //int add = GetAddress(Address);\r\n if (Address < 0) return;\r\n try {\r\n ReadHoldingRegistersResponse res = ModbusTcpHelper.get().syncReadHoldingRegisters(slaveAddress, Address, length*2);\r\n byte[] data = res.getData();\r\n float[] tempValues = new float[length];\r\n for (int i = 0; i < length; i++) {\r\n byte[] tempData = new byte[4];\r\n for (int m = 0; m < 4; m++) {\r\n tempData[m] = data[i * 4 + m];\r\n }\r\n tempValues[i] = BytesToFloat(tempData, DataFormat.BADC);\r\n }\r\n if (tempValues.length == length) {\r\n if (callback != null) callback.onSuccess(tempValues);\r\n }\r\n } catch (InterruptedException e) {\r\n MessageLog.ShowError(\"ReadFloat onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n } catch (ExecutionException e) {\r\n MessageLog.ShowError(\"ReadFloat onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n } catch (ModbusTransportException e) {\r\n MessageLog.ShowError(\"ReadFloat onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n } catch (ModbusInitException e) {\r\n MessageLog.ShowError(\"ReadFloat onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n } catch (ModbusRespException e) {\r\n MessageLog.ShowError(\"ReadFloat onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n }\r\n }\r\n\r\n public void ReadInts(int slaveAddress,int Address, int length,DataFormat dataFormat, IReadCallBack callback) {\r\n //int add = GetAddress(Address);\r\n if (Address < 0) return;\r\n try {\r\n ReadHoldingRegistersResponse res = ModbusTcpHelper.get().syncReadHoldingRegisters(slaveAddress, Address, length * 2);\r\n byte[] data = res.getData();\r\n int[] tempValues = new int[length];\r\n if(data.length>=4)\r\n {\r\n for (int i = 0; i < length; i++) {\r\n byte[] tempData = new byte[4];\r\n for (int m = 0; m < 4; m++) {\r\n tempData[m] = data[i * 4 + m];\r\n }\r\n tempValues[i] = BytesToInt(tempData, dataFormat);\r\n }\r\n }else\r\n {\r\n MessageLog.ShowError(\"ReadInt onFailure,Address=\" );\r\n\r\n }\r\n if (callback != null) callback.onSuccess(tempValues);\r\n } catch (InterruptedException e) {\r\n MessageLog.ShowError(\"ReadInt onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n } catch (ExecutionException e) {\r\n MessageLog.ShowError(\"ReadInt onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n } catch (ModbusTransportException e) {\r\n MessageLog.ShowError(\"ReadInt onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n } catch (ModbusInitException e) {\r\n MessageLog.ShowError(\"ReadInt onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n } catch (ModbusRespException e) {\r\n MessageLog.ShowError(\"ReadInt onFailure,Address=\" + Address + \",length=\" + length + \",msg:\" + e.toString());\r\n }\r\n }\r\n\r\n public void WriteShort(int slaveAddress,int Address, short Value, IWriteCallBack callback) {\r\n //int add = GetAddress(Address);\r\n if (Address < 0) return;\r\n short[] send = new short[1];\r\n send[0] = Value;\r\n try {\r\n ModbusTcpHelper.get().syncWriteRegisters(slaveAddress, Address, send);\r\n if (callback != null)\r\n callback.onSuccess();\r\n } catch (InterruptedException e) {\r\n MessageLog.ShowError(\"WriteShort onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ExecutionException e) {\r\n MessageLog.ShowError(\"WriteShort onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ModbusTransportException e) {\r\n MessageLog.ShowError(\"WriteShort onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ModbusInitException e) {\r\n MessageLog.ShowError(\"WriteShort onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ModbusRespException e) {\r\n MessageLog.ShowError(\"WriteShort onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n }\r\n }\r\n\r\n public void WriteShorts(int slaveAddress,int Address, short[] Value, IWriteCallBack callback) {\r\n //int add = GetAddress(Address);\r\n if (Address < 0) return;\r\n try {\r\n ModbusTcpHelper.get().syncWriteRegisters(slaveAddress, Address, Value);\r\n if (callback != null)\r\n callback.onSuccess();\r\n } catch (InterruptedException e) {\r\n MessageLog.ShowError(\"WriteShort onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ExecutionException e) {\r\n MessageLog.ShowError(\"WriteShort onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ModbusTransportException e) {\r\n MessageLog.ShowError(\"WriteShort onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ModbusInitException e) {\r\n MessageLog.ShowError(\"WriteShort onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ModbusRespException e) {\r\n MessageLog.ShowError(\"WriteShort onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n }\r\n }\r\n\r\n public void WriteBool(int slaveAddress,int Address, boolean Value, IWriteCallBack callback) {\r\n //int add = GetAddress(Address);\r\n if (Address < 0) return;\r\n try {\r\n ModbusTcpHelper.get().syncWriteCoil(slaveAddress, Address, Value);\r\n if (callback != null)\r\n callback.onSuccess();\r\n } catch (InterruptedException e) {\r\n MessageLog.ShowError(\"WriteBool onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ExecutionException e) {\r\n MessageLog.ShowError(\"WriteBool onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ModbusTransportException e) {\r\n MessageLog.ShowError(\"WriteBool onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ModbusInitException e) {\r\n MessageLog.ShowError(\"WriteBool onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ModbusRespException e) {\r\n MessageLog.ShowError(\"WriteBool onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n }\r\n }\r\n\r\n public void WriteBools(int slaveAddress,int Address, boolean[] Value, IWriteCallBack callback) {\r\n //int add = GetAddress(Address);\r\n if (Address < 0) return;\r\n try {\r\n ModbusTcpHelper.get().syncWriteCoils(slaveAddress, Address, Value);\r\n if (callback != null)\r\n callback.onSuccess();\r\n } catch (InterruptedException e) {\r\n MessageLog.ShowError(\"WriteBool onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ExecutionException e) {\r\n MessageLog.ShowError(\"WriteBool onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ModbusTransportException e) {\r\n MessageLog.ShowError(\"WriteBool onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ModbusInitException e) {\r\n MessageLog.ShowError(\"WriteBool onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ModbusRespException e) {\r\n MessageLog.ShowError(\"WriteBool onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n }\r\n }\r\n public void WriteFloat(int slaveAddress,int Address, float Value, IWriteCallBack callback) {\r\n //int add = GetAddress(Address);\r\n if (Address < 0) return;\r\n int intBits = Float.floatToRawIntBits(Value);\r\n short[] send = IntToShorts(intBits);\r\n try {\r\n ModbusTcpHelper.get().syncWriteRegisters(slaveAddress, Address, send);\r\n\r\n if (callback != null) callback.onSuccess();\r\n } catch (InterruptedException e) {\r\n MessageLog.ShowError(\"WriteFloat onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ExecutionException e) {\r\n MessageLog.ShowError(\"WriteFloat onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ModbusTransportException e) {\r\n MessageLog.ShowError(\"WriteFloat onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ModbusInitException e) {\r\n MessageLog.ShowError(\"WriteFloat onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ModbusRespException e) {\r\n MessageLog.ShowError(\"WriteFloat onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n }\r\n }\r\n\r\n public void WriteInt(int slaveAddress,int Address, int Value, IWriteCallBack callback) {\r\n //int add = GetAddress(Address);\r\n if (Address < 0) return;\r\n short[] send = IntToShorts(Value);\r\n try {\r\n ModbusTcpHelper.get().syncWriteRegisters(slaveAddress, Address, send);\r\n if (callback != null) callback.onSuccess();\r\n } catch (InterruptedException e) {\r\n MessageLog.ShowError(\"WriteInt onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ExecutionException e) {\r\n MessageLog.ShowError(\"WriteInt onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ModbusTransportException e) {\r\n MessageLog.ShowError(\"WriteInt onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ModbusInitException e) {\r\n MessageLog.ShowError(\"WriteInt onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n } catch (ModbusRespException e) {\r\n MessageLog.ShowError(\"WriteInt onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n if (callback != null) callback.onFailure(e.toString());\r\n }\r\n }\r\n\r\n public void WriteShort(int slaveAddress,int Address, short Value) {\r\n //int add = GetAddress(Address);\r\n if (Address < 0) return;\r\n short[] send = new short[1];\r\n send[0] = Value;\r\n try {\r\n ModbusTcpHelper.get().syncWriteRegisters(slaveAddress, Address, send);\r\n } catch (InterruptedException e) {\r\n MessageLog.ShowError(\"WriteShort onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n } catch (ExecutionException e) {\r\n MessageLog.ShowError(\"WriteShort onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n } catch (ModbusTransportException e) {\r\n MessageLog.ShowError(\"WriteShort onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n } catch (ModbusInitException e) {\r\n MessageLog.ShowError(\"WriteShort onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n } catch (ModbusRespException e) {\r\n MessageLog.ShowError(\"WriteShort onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n }\r\n }\r\n\r\n public void WriteBool(int slaveAddress,int Address, boolean Value) {\r\n //int add = GetAddress(Address);\r\n if (Address < 0) return;\r\n\r\n try {\r\n ModbusTcpHelper.get().syncWriteCoil(slaveAddress, Address, Value);\r\n } catch (InterruptedException e) {\r\n MessageLog.ShowError(\"WriteBool onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n } catch (ExecutionException e) {\r\n MessageLog.ShowError(\"WriteBool onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n } catch (ModbusTransportException e) {\r\n MessageLog.ShowError(\"WriteBool onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n } catch (ModbusInitException e) {\r\n MessageLog.ShowError(\"WriteBool onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n } catch (ModbusRespException e) {\r\n MessageLog.ShowError(\"WriteBool onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n }\r\n }\r\n\r\n public void WriteFloat(int slaveAddress,int Address, float Value) {\r\n //int add = GetAddress(Address);\r\n if (Address < 0) return;\r\n int intBits = Float.floatToRawIntBits(Value);\r\n short[] send = new short[]{(short) ((intBits >> 16) & 0xffff), (short) (intBits & 0xffff)};\r\n try {\r\n ModbusTcpHelper.get().syncWriteRegisters(slaveAddress, Address, send);\r\n } catch (InterruptedException e) {\r\n MessageLog.ShowError(\"WriteFloat onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n } catch (ExecutionException e) {\r\n MessageLog.ShowError(\"WriteFloat onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n } catch (ModbusTransportException e) {\r\n MessageLog.ShowError(\"WriteFloat onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n } catch (ModbusInitException e) {\r\n MessageLog.ShowError(\"WriteFloat onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n } catch (ModbusRespException e) {\r\n MessageLog.ShowError(\"WriteFloat onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n }\r\n }\r\n\r\n public void WriteInt(int slaveAddress,int Address, int Value) {\r\n //int add = GetAddress(Address);\r\n if (Address < 0) return;\r\n short[] send = IntToShorts(Value);\r\n try {\r\n ModbusTcpHelper.get().syncWriteRegisters(slaveAddress, Address, send);\r\n } catch (InterruptedException e) {\r\n MessageLog.ShowError(\"WriteInt onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n } catch (ExecutionException e) {\r\n MessageLog.ShowError(\"WriteInt onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n } catch (ModbusTransportException e) {\r\n MessageLog.ShowError(\"WriteInt onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n } catch (ModbusInitException e) {\r\n MessageLog.ShowError(\"WriteInt onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n } catch (ModbusRespException e) {\r\n MessageLog.ShowError(\"WriteInt onFailure,Address=\" + Address + \",length=\" + Value + \",msg:\" + e.toString());\r\n }\r\n }\r\n\r\n //endregion\r\n}\r\n +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/java/com/bonait/bnframework/common/modbus/ModbusRTUServer.java b/app/src/main/java/com/bonait/bnframework/common/modbus/ModbusRTUServer.java +--- a/app/src/main/java/com/bonait/bnframework/common/modbus/ModbusRTUServer.java (revision 1e67707b12981e019b49f3fb3f1b772d4a8d1662) ++++ b/app/src/main/java/com/bonait/bnframework/common/modbus/ModbusRTUServer.java (date 1701245142553) +@@ -84,7 +84,7 @@ + int stopBits=ConfigName.getInstance().SerialStopBits; + //String com="COM0"; + +- param = SerialParam.create("/dev/ttyCOM1", baudRate) // 串口地址和波特率 ++ param = SerialParam.create("/dev/ttyCOM0", baudRate) // 串口地址和波特率 + .setDataBits(dataBits) // 数据位 + .setParity(parity) // 校验位 + .setStopBits(stopBits) // 停止位 diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023_12_4_14_14__Changes_.xml b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023_12_4_14_14__Changes_.xml new file mode 100644 index 00000000..4dc181f3 --- /dev/null +++ b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023_12_4_14_14__Changes_.xml @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/app/src/main/java/com/bonait/bnframework/business/MainInit.java b/app/src/main/java/com/bonait/bnframework/business/MainInit.java index 8bc6e4af..56800c03 100644 --- a/app/src/main/java/com/bonait/bnframework/business/MainInit.java +++ b/app/src/main/java/com/bonait/bnframework/business/MainInit.java @@ -9,30 +9,21 @@ import com.bonait.bnframework.common.constant.ConfigName; import com.bonait.bnframework.common.constant.Constants; import com.bonait.bnframework.common.constant.DataBus; import com.bonait.bnframework.common.db.QueryDB; -import com.bonait.bnframework.common.db.file.DBHelper; import com.bonait.bnframework.common.db.mode.BPA_ALERTLOG; -import com.bonait.bnframework.common.db.mode.BPA_CLOUDDATA; import com.bonait.bnframework.common.db.mode.BPA_GOODS; import com.bonait.bnframework.common.db.mode.BPA_GOODSRECIPE; import com.bonait.bnframework.common.db.mode.BPA_LOG; -import com.bonait.bnframework.common.db.mode.BPA_PLCADDRESS; -import com.bonait.bnframework.common.db.mode.BPA_SILOS; -import com.bonait.bnframework.common.db.mode.BPA_SILOSANDMATERIAL; import com.bonait.bnframework.common.db.mode.BPA_USER; import com.bonait.bnframework.common.db.res.AlertLogEnum; -import com.bonait.bnframework.common.db.res.ResGoodsRecipe; import com.bonait.bnframework.common.db.res.UserLogEnum; import com.bonait.bnframework.common.helper.CrashHandler; import com.bonait.bnframework.common.helper.I.IMessageLogNotify; import com.bonait.bnframework.common.helper.MessageLog; import com.bonait.bnframework.common.helper.SdCart; -import com.bonait.bnframework.common.modbus.ModbusTcpHelper; import com.bonait.bnframework.common.notification.MainNotification; import com.bonait.bnframework.common.utils.AppUtils; -import com.bonait.bnframework.common.utils.NetworkUtils; import com.bonait.bnframework.common.utils.PreferenceUtils; import com.bonait.bnframework.common.utils.ToastUtils; -import com.bonait.bnframework.common.utils.WifiInterceptor; import com.bonait.bnframework.manager.ActivityLifecycleManager; import com.lzy.okgo.OkGo; import com.lzy.okgo.cache.CacheEntity; @@ -215,8 +206,8 @@ public class MainInit { public void ErrorMsg(String msg) { if(msg.contains("msg:com.serotonin.modbus4j.exception")) { - ModbusTcpHelper.get().release();//释放modbus - ConfigName.getInstance().PlcIsConnect=false; + //ModbusTcpHelper.get().release();//释放modbus + //ConfigName.getInstance().PlcIsConnect=false; BPA_ALERTLOG log = new BPA_ALERTLOG(); log.userID = ConfigName.getInstance().user.userID; diff --git a/app/src/main/java/com/bonait/bnframework/common/modbus/ModbusRTUServer.java b/app/src/main/java/com/bonait/bnframework/common/modbus/ModbusRTUServer.java index bd32c37c..377688a5 100644 --- a/app/src/main/java/com/bonait/bnframework/common/modbus/ModbusRTUServer.java +++ b/app/src/main/java/com/bonait/bnframework/common/modbus/ModbusRTUServer.java @@ -84,7 +84,7 @@ public class ModbusRTUServer { int stopBits=ConfigName.getInstance().SerialStopBits; //String com="COM0"; - param = SerialParam.create("/dev/ttyCOM1", baudRate) // 串口地址和波特率 + param = SerialParam.create("/dev/ttyCOM0", baudRate) // 串口地址和波特率 .setDataBits(dataBits) // 数据位 .setParity(parity) // 校验位 .setStopBits(stopBits) // 停止位