Ver Fonte

修改opcda通过频率读取替换值时出错

zhoupeng há 1 ano atrás
pai
commit
54e20ef94e

+ 4 - 4
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcDaExceedTask.java

@@ -194,14 +194,14 @@ public class OpcDaExceedTask extends TimerTask {
                                     opcAsyncTask.packageEventTable(itemList, dataSourceId, index - 1L);
                                 }
                                 if (Blank.isNotEmpty(dm) && dm.getModelType().equals(ConstantStr.VALUE_REPLACE)) {
-                                    String valStr = value.toString();
-                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, valStr, DataModel.valueReplace(dm, valStr),
+                                    String valueStr = value.toString();
+                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, valueStr, DataModel.valueReplace(dm, valueStr),
                                             currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
                                     cursorRawDataList.add(cursorRawData);
                                 } else {
                                     if (javaType.toLowerCase().equals("boolean")) {
-                                        String varStr = value.toString();
-                                        CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, varStr, varStr,
+                                        String valueStr = value.toString();
+                                        CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, valueStr, valueStr,
                                                 currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
                                         cursorRawDataList.add(cursorRawData);
                                     } else {

+ 2 - 2
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcDaFrequencyTask.java

@@ -226,8 +226,8 @@ public class OpcDaFrequencyTask extends TimerTask {
                                     }
                                 }
                                 if (Blank.isNotEmpty(dm) && dm.getModelType().equals(ConstantStr.VALUE_REPLACE)) {
-                                    String valStr = val.toString();
-                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, valStr, DataModel.valueReplace(dm, valStr),
+                                    String valueStr = value.toString();
+                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, valueStr, DataModel.valueReplace(dm, valueStr),
                                             currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
                                     cursorRawDataList.add(cursorRawData);
                                 } else {

+ 9 - 5
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/util/OpcDaUtil.java

@@ -192,9 +192,9 @@ public class OpcDaUtil {
             String javaType;
             switch (type) {
                 case JIVariant.VT_I1://读到byte类型
-//                javaType="byte";
-//                value = var.getObject();
-//                break;
+                    javaType = "byte";
+                    value = Integer.valueOf(var.getObjectAsChar());
+                    break;
                 case JIVariant.VT_I2://读到short类型
                     javaType = "short";
                     value = var.getObjectAsShort();
@@ -247,7 +247,7 @@ public class OpcDaUtil {
             }
             map.put("javaType", javaType);
             map.put("value", value);
-        }catch (Exception e){
+        } catch (Exception e) {
 
         }
         return map;
@@ -346,6 +346,10 @@ public class OpcDaUtil {
         return itemStr;
     }
 
+    //java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException: Index 16 out of bounds for length 16
+    //	at org.openscada.opc.lib.da.Server.connect(Server.java:140)
+    //	at com.example.opc_da.task.Test.main(Test.java:37)
+    //读取opcda,因为没有输入账号导致的问题
     public static String genException(String message) {
         if (Blank.isEmpty(message)) {
             return "通信异常,请联系管理员";
@@ -356,7 +360,7 @@ public class OpcDaUtil {
             return "ip连接不可用";
         } else if (message.contains("Index 16 out of bounds for length 16") ||
                 message.contains("java.lang.ArrayIndexOutOfBoundsException")) {
-            return "服务未启动";
+            return "服务未启动或账号输入错误";
         } else if (message.contains("0x80070005")) {
             return "访问被拒绝,可能是权限未配置,配置可在组件服务中进行配置";
         } else if (message.contains("0x80040154")) {