Browse Source

添加日志记录PLC读取的数据,处理SQL为Null的Bug

章政 7 years ago
parent
commit
3a68d99551

+ 3 - 1
PLCDataReader/DataOperate/DataHelper.cs

@@ -11,7 +11,7 @@ namespace UAS_PLCDataReader.DataOperate
     {
 
         //泽天外网地址
-        private readonly string ConnectionStrings = "Connection Timeout=0;Pooling=false;Password=select!#%*(;User ID=GOLDEN_TEST;Pooling=false;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=183.238.39.179)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)));";
+        private readonly string ConnectionStrings = "Connection Timeout=0;Pooling=false;Password=select!#%*(;User ID=GOLDEN_TEST;Pooling=false;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.158)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)));";
         //泽天ERP地址
         public static readonly string ERPAddesss = "http://183.238.39.179:8099/ERP/";
         //用户选择的数据库的连接字符串
@@ -467,6 +467,8 @@ namespace UAS_PLCDataReader.DataOperate
         {
             object result = null;
             command = new OracleCommand(SQL, connection);
+            if (SQL == null)
+                return null;
             //用来拼接参数的
             if (names.Length > 0)
             {

+ 16 - 0
PLCDataReader/PublicMethod/LogicHandler.cs

@@ -132,6 +132,22 @@ namespace UAS_PLCDataReader.PublicMethod
             Main.QueueUpdateDevice.Enqueue(sql.ToString());
         }
 
+        /// <summary>
+        /// 记录轮询日志,记录时间
+        /// </summary>
+        /// <param name="iDeCode">设备编号</param>
+        /// <param name="iSendDataSize">发送数据大小</param>
+        /// <param name="iReceiveDataSize">接收数据大小</param>
+        /// <param name="iOnLine">上线或者离线</param>
+        public static void DoDevicePollingLog(string iDeCode, string iRemark)
+        {
+            StringBuilder sql = new StringBuilder();
+            sql.Clear();
+            sql.Append("update DEVICEPOLLINGLOG set dpg_remark='" + iRemark + "' where dpg_id=(select max(dpg_id) ");
+            sql.Append("from DEVICEPOLLINGLOG where dpg_decode='" + iDeCode + "')");
+            Main.QueueUpdateDevice.Enqueue(sql.ToString());
+        }
+
         /// <summary>
         /// 记录轮询日志,记录时间
         /// </summary>

+ 3 - 1
PLCDataReader/PublicMethod/ModBusTCPClient.cs

@@ -146,9 +146,11 @@ namespace UAS_PLCDataReader.PublicMethod
                 LogicHandler.DoDevicePollingLog(decode, true);
                 int length = socket.Receive(receive);
                 LogicHandler.UpdateDeviceStatus(decode, dename, DeviceStatus.Running);
+                string str = BaseUtil.ByteToHexadecimalString(receive, length);
+                LogicHandler.DoDevicePollingLog(decode, BaseUtil.ASCIIToString(str));
                 if (!returnvalue.ContainsKey(socket.RemoteEndPoint.ToString()))
                 {
-                    returnvalue.Add(socket.RemoteEndPoint.ToString(), BaseUtil.ByteToHexadecimalString(receive, length));
+                    returnvalue.Add(socket.RemoteEndPoint.ToString(), str);
                 }
             }
             catch (Exception)