Browse Source

处理表身号代字母的情况

jochu_computer 1 month ago
parent
commit
f348d17d63

+ 1 - 1
NB_IOT_TCP_HP_SOCKET/App.config

@@ -8,7 +8,7 @@
     <!--执行断开静默链接间隔时间毫秒-->
     <add key="ConnectionTimeOutInterval" value="10000" />
     <!--设备类型 1:电池供电;2:市电供电MODBUS;3:电池供电和市电供电MODBUS-->
-    <add key="IsHaveModBus" value="1" />
+    <add key="IsHaveModBus" value="3" />
     <!--MODBUS轮询获取抄表数据时间毫秒-->
     <add key="ModBusQueryInterval" value="120000" />
     <!--电池供电判断超时最大下发指令次数-->

+ 15 - 3
NB_IOT_TCP_HP_SOCKET/MainForm_TCP.cs

@@ -904,6 +904,10 @@ namespace NB_IOT_TCP_HP_SOCKET
                         // 查询该传输设备对应的设备信息及通讯设备信息
                         DataTable dt = ProtocolAnalysisTools.GetDeviceList(sourceNumber);
 
+                        if (dt.Rows.Count == 0) {
+                            dt = ProtocolAnalysisTools.GetDeviceList(clientInfo.SourceNumber);
+                        }
+
                         string agreement = ""; // 设备协议
                         string agreementParam = ""; // 设备协议参数
                         string agreementAddress = ""; // 设备地址
@@ -1560,9 +1564,10 @@ namespace NB_IOT_TCP_HP_SOCKET
                     }
                 }
                 HistoryRecord record = new HistoryRecord(recordtime, list.ToArray());
-                record.Funcode = cm._funCode;
+                
                 if (cm != null)
                 {
+                    record.Funcode = cm._funCode;
                     record.DataSource = "历史记录";
                 }
                 else
@@ -1628,11 +1633,13 @@ namespace NB_IOT_TCP_HP_SOCKET
             int paramSendInterval = Convert.ToInt32(ConfigurationManager.AppSettings["ParamSendInterval"]); // 电池供电同一设备下发指令每次间隔时间(秒)
 
             // 循环下发设参指令
-            foreach (Task task in remoteTask.Tasklist)
+            //foreach (Task task in remoteTask.Tasklist)
+            for (int i = 0; i < remoteTask.Tasklist.Count; i++)
             {
+                Task task = remoteTask.Tasklist[i];
                 TimeSpan span = (TimeSpan)(DateTime.Now - paramSendTime);
                 // 未发送;已发送&&发送次数小于配置的最大发送次数&&两次间隔时间大于配置的间隔时间
-                if (clientInfo.ParamRetrunStatus == 0 && (paramSendStatus == 0 || (paramSendStatus == 1 && paramSendNum < paramSendNumTmp && span.TotalSeconds >= paramSendInterval)))
+                if ((clientInfo.ParamRetrunStatus == 0 && (paramSendStatus == 0 || (paramSendStatus == 1 && paramSendNum < paramSendNumTmp && span.TotalSeconds >= paramSendInterval)))|| (clientInfo.ParamRetrunStatus == 1 && i < remoteTask.Tasklist.Count))
                 {
                     PSProtocol protocol2 = new PSProtocol(clientInfo.DestNumber, clientInfo.SourceNumber, task.SendCode);
                     protocol2.Type = FrameType.Battery_Param;
@@ -1844,6 +1851,11 @@ namespace NB_IOT_TCP_HP_SOCKET
         public int ParamRetrunStatus { get; set; } // 设参回包状态 0:未回包;1:已回包
         public int ParamSendNum { get; set; } // 设参发送次数
         #endregion
+
+        /// <summary>
+        /// 设备id,解决后期指令数据地址码乱填的问题,地址码不对导致指令,问什么硬件程序总是不按照正常协议来呢,导致很多问题。
+        /// </summary>
+        public int deviceId { get; set; }
     }
 
     public class InsourcingData

+ 11 - 1
NB_IOT_TCP_HP_SOCKET/WWKJUtil/PSProtocol.cs

@@ -15,6 +15,7 @@ namespace NB_IOT_TCP_HP_SOCKET.WWKJUtil
         public byte[] _superSysCode;
         public byte[] _systemKey;
         public FrameType _type;
+        //public int _id;
 
         public PSProtocol()
         {
@@ -67,7 +68,7 @@ namespace NB_IOT_TCP_HP_SOCKET.WWKJUtil
             }
             set
             {
-                if ((value.Length <= 12) && Regex.IsMatch(value, @"^\d+$"))
+                if ((value.Length <= 12) )//&& Regex.IsMatch(value, @"^\d+$"))
                 {
                     this._destNumberLength = value.Length;
                     string str = value + "0";
@@ -172,5 +173,14 @@ namespace NB_IOT_TCP_HP_SOCKET.WWKJUtil
             }
         }
 
+        //public int id {
+        //    get {
+        //        return this._id;
+        //    }
+        //    set {
+        //        this._id = id;
+        //    }
+        //}
+
     }
 }