Browse Source

超声波大表添加新指令

jochu_computer 2 weeks ago
parent
commit
8a52073e38

+ 1 - 1
NB_IOT_TCP_HP_SOCKET/App.config

@@ -2,7 +2,7 @@
 <configuration>
   <appSettings>
     <add key="APPName" value="大表通讯服务器" />
-    <add key="db" value="Data Source=47.105.90.108;Initial Catalog=bigmeternewtest;Persist Security Info=True;User ID=sa;Password=wwkj@2136807;Pooling=yes;MultipleActiveResultSets=True" />
+    <add key="db" value="Data Source=123.56.196.68;Initial Catalog=通用大表3;Persist Security Info=True;User ID=sa;Password=wwkj@2136816;Pooling=yes;MultipleActiveResultSets=True" />
     <!--心跳间隔时间(毫秒)-->
     <add key="ConnectionTimeOut" value="120000" />
     <!--执行断开静默链接间隔时间毫秒-->

+ 0 - 2
NB_IOT_TCP_HP_SOCKET/MainForm_TCP.cs

@@ -5,8 +5,6 @@ using System.Collections;
 using System.Collections.Generic;
 using System.Configuration;
 using System.Data;
-using System.Drawing;
-using System.IO;
 using System.Linq;
 using System.Runtime.InteropServices;
 using System.Threading;

+ 34 - 18
NB_IOT_TCP_HP_SOCKET/WWKJUtil/ProtocolAnalysisTools.cs

@@ -211,7 +211,7 @@ namespace NB_IOT_TCP_HP_SOCKET.WWKJUtil
             cm._recordCount = data[8];
             cm._cellVoltage = ((float)((data[11] * 0x100) + data[12])) / 100f;
             cm._signalStrength = data[0x10];
-            if ((data[13] & 8) == 8)
+            if ((data[13] & 8) == 8 && cm._funCode == 0x2c)
             {
                 cm._isEnd = true;
             }
@@ -235,12 +235,13 @@ namespace NB_IOT_TCP_HP_SOCKET.WWKJUtil
                     int num7 = 0;
                     for (num5 = 0; num5 < strReturnData.Length; num5++)
                     {
+                        num7++;
                         if (strReturnData.Substring((strReturnData.Length - 1) - num5, 1) == "1")
                         {
-
-                            num7++;
                             if (num5 == 11) {
-                                CellMonitorConvertByType.ConvertData(data, 20 + ((i * (num + 1)) * 4) + ((num7) * 4), "int", "", out string str5);
+                                //CellMonitorConvertByType.ConvertData(data, 20 + ((i * (num + 1)) * 4) + ((num7) * 4), "int", "", out string str5);
+                                string str5 = BitConverter.ToString(data, 20 + ((i * (num + 1)) * 4) + ((num7) * 4), 4);
+
                                 MonitorValue value2 = new MonitorValue();
                                 value2.Name = "B" + num5.ToString();
                                 value2.Value = str5;
@@ -624,45 +625,60 @@ namespace NB_IOT_TCP_HP_SOCKET.WWKJUtil
                             }
                         }
                     }
-                    else if(record2.Funcode == 0x3d) // 添加历史记录新指令  默认 老指令先发, 新指令再发,否则会丢数据,已约定好,2c 先发 3d后发
+                    else  // 添加历史记录新指令  默认 老指令先发, 新指令再发,否则会丢数据,已约定好,2c 先发 3d后发
                     {
                         StringBuilder sb = new StringBuilder();
                         List<CommData> dataList = record2.DataList;
                         sb.Append("Update ").Append(tablename).Append(" SET ");
+                        StringBuilder sbStr = new StringBuilder();
                         for (int i = 0; i < dataList.Count; i++)
                         {
                             CommData commData = dataList[i];
-                            sb.Append(commData.Name).Append("=");
+
                             if ((((commData.Value == null) || (commData.Value == "")) || ((commData.Value == "未知") || (commData.Value == "--"))) || (commData.Value == "非数字"))
                             {
-                                sb.Append("0");
+                                //    sb.Append("0");
                             }
                             else
                             {
                                 if (commData.Tag == null || "".Equals(commData.Tag) || "BIT".Equals(commData.Tag.ToUpper()))
                                 {
-                                    sb.Append("'").Append(commData.Value).Append("'");
+                                    sbStr.Append(commData.Name).Append("=");
+                                    sbStr.Append("'").Append(commData.Value).Append("'");
                                 }
                                 else
                                 {
-                                    sb.Append(commData.Value);
+                                        sbStr.Append(commData.Name).Append("=");
+                                        sbStr.Append(commData.Value);
                                 }
+                                sbStr.Append(",");
                             }
 
-                            if (i < dataList.Count - 1) {
-                                sb.Append(",");
-                            }
+                            
                         }
-                        sb.Append("设备ID=").Append(deviceid).Append(" AND 采集时间 ='").Append(record2.RecordTime.ToString()).Append("'");
+                        sb.Append(sbStr.ToString().TrimEnd(','));
+                        sb.Append(" WHERE 设备ID=").Append(deviceid).Append(" AND 采集时间 ='").Append(record2.RecordTime.ToString()).Append("'");
 
                         int rs = DBHelper.Query(sb.ToString());
 
                         if (rs > 0)
                         {
-                            // 合并 最后状态
-                            var record = lastData[deviceid];
-                            record.DataList.AddRange(record2.DataList);
-                            lastData[deviceid] = record;
+                            //// 合并 最后状态
+                            //var record = lastData[deviceid];
+                            //record.DataList.AddRange(record2.DataList);
+                            //lastData[deviceid] = record;
+                            if (lastData.ContainsKey(deviceid))
+                            {
+                                HistoryRecord historyRecord = lastData[deviceid];
+                                if (record2.RecordTime >= historyRecord.RecordTime)
+                                {
+                                    lastData[deviceid] = record2;
+                                }
+                            }
+                            else
+                            {
+                                lastData[deviceid] = record2;
+                            }
                         }
                     }
                 }
@@ -811,7 +827,7 @@ namespace NB_IOT_TCP_HP_SOCKET.WWKJUtil
                     {
                         if ((((commData.Value == null) || (commData.Value == "")) || ((commData.Value == "未知") || (commData.Value == "--"))) || (commData.Value == "非数字"))
                         {
-                            strSql.Append(",[").Append(commData.Name).Append("]='0'");
+                            //    strSql.Append(",[").Append(commData.Name).Append("]='0'");
                         }
                         else
                         {