diff --git a/.gitignore b/.gitignore index 1a67bd4..57ed504 100644 --- a/.gitignore +++ b/.gitignore @@ -30,4 +30,10 @@ /SensorHub.WasteGas/obj /SensorHub.WaterMeter/obj /SensorHub.Well/obj +/SensorHub.WellPlus/obj +/SensorHub.WellPlus/bin +/SensorHub.Tube/obj +/SensorHub.Tube/bin +/SensorHub.HydrogenSulfide/obj +/SensorHub.HydrogenSulfide/bin /TestClass/obj \ No newline at end of file diff --git a/.gitignore b/.gitignore index 1a67bd4..57ed504 100644 --- a/.gitignore +++ b/.gitignore @@ -30,4 +30,10 @@ /SensorHub.WasteGas/obj /SensorHub.WaterMeter/obj /SensorHub.Well/obj +/SensorHub.WellPlus/obj +/SensorHub.WellPlus/bin +/SensorHub.Tube/obj +/SensorHub.Tube/bin +/SensorHub.HydrogenSulfide/obj +/SensorHub.HydrogenSulfide/bin /TestClass/obj \ No newline at end of file diff --git a/SensorHub.LG/LG.cs b/SensorHub.LG/LG.cs index 2caf218..f3d8674 100644 --- a/SensorHub.LG/LG.cs +++ b/SensorHub.LG/LG.cs @@ -26,6 +26,7 @@ String settings = requestInfo.Parameters[8]; String source = requestInfo.Parameters[9]; String sm4Key = requestInfo.Parameters[10]; + String errCode = requestInfo.Parameters[11]; String devName = "LG"; @@ -106,6 +107,16 @@ { SystemDateTag systemDateTag = (SystemDateTag)tag; collectDate = systemDateTag.CollectDate; + + // 单独处理时间字段异常的情况 + if (errCode.Contains("timeErr") == true) + { + int year = 2000 + Int32.Parse(tag.DataValue.Substring(0, 2)); + int month = Int32.Parse(tag.DataValue.Substring(2, 2)); + int day = Int32.Parse(tag.DataValue.Substring(4, 2)); + collectDate = year + "-" + month + "-" + day; + } + continue; } diff --git a/.gitignore b/.gitignore index 1a67bd4..57ed504 100644 --- a/.gitignore +++ b/.gitignore @@ -30,4 +30,10 @@ /SensorHub.WasteGas/obj /SensorHub.WaterMeter/obj /SensorHub.Well/obj +/SensorHub.WellPlus/obj +/SensorHub.WellPlus/bin +/SensorHub.Tube/obj +/SensorHub.Tube/bin +/SensorHub.HydrogenSulfide/obj +/SensorHub.HydrogenSulfide/bin /TestClass/obj \ No newline at end of file diff --git a/SensorHub.LG/LG.cs b/SensorHub.LG/LG.cs index 2caf218..f3d8674 100644 --- a/SensorHub.LG/LG.cs +++ b/SensorHub.LG/LG.cs @@ -26,6 +26,7 @@ String settings = requestInfo.Parameters[8]; String source = requestInfo.Parameters[9]; String sm4Key = requestInfo.Parameters[10]; + String errCode = requestInfo.Parameters[11]; String devName = "LG"; @@ -106,6 +107,16 @@ { SystemDateTag systemDateTag = (SystemDateTag)tag; collectDate = systemDateTag.CollectDate; + + // 单独处理时间字段异常的情况 + if (errCode.Contains("timeErr") == true) + { + int year = 2000 + Int32.Parse(tag.DataValue.Substring(0, 2)); + int month = Int32.Parse(tag.DataValue.Substring(2, 2)); + int day = Int32.Parse(tag.DataValue.Substring(4, 2)); + collectDate = year + "-" + month + "-" + day; + } + continue; } diff --git a/SensorHub.Methane/Methane.cs b/SensorHub.Methane/Methane.cs index 09c064d..52cfd3c 100644 --- a/SensorHub.Methane/Methane.cs +++ b/SensorHub.Methane/Methane.cs @@ -24,6 +24,7 @@ String settings = requestInfo.Parameters[8]; String source = requestInfo.Parameters[9]; String exist = requestInfo.Parameters[10]; + String errCode = requestInfo.Parameters[11]; String devName = "Methane"; @@ -109,6 +110,16 @@ { SystemDateTag systemDateTag = (SystemDateTag)tag; collectDate = systemDateTag.CollectDate; + + // 单独处理时间字段异常的情况 + if (errCode.Contains("timeErr") == true) + { + int year = 2000 + Int32.Parse(tag.DataValue.Substring(0, 2)); + int month = Int32.Parse(tag.DataValue.Substring(2, 2)); + int day = Int32.Parse(tag.DataValue.Substring(4, 2)); + collectDate = year + "-" + month + "-" + day; + } + continue; } @@ -171,9 +182,6 @@ TagHandler methaneHandler = new MethaneTagHandler(); methaneHandler.resolve(tag, session); - // 为环能和讯腾设备的uptime字段做特殊处理 - collectDate = changeTimeToBinForXT(devCode, collectDate); - DateTime baseTime = Convert.ToDateTime(collectDate + " " + methaneHandler.CollecTime); for (int i = 0; i < methaneHandler.DataList.Count; i++) { @@ -220,56 +228,5 @@ } } - - private String changeTimeToBinForXT(String devcode, String colltime) - { - String retCollTime = colltime; - int xtMin = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["xtMin"]); - int xtMax = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["xtMax"]); - int hnMin1 = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["hnMin1"]); - int hnMax1 = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["hnMax1"]); - int hnMin2 = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["hnMin2"]); - int hnMax2 = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["hnMax2"]); - - String devPrefix = devcode.Substring(0, 4); - int devCodeInt = Int32.Parse(devcode.Substring(4)); - if (devPrefix.Equals("3111")) - { - if (devCodeInt <= xtMax && devCodeInt >= xtMin) - { - String[] timeArray = colltime.Split('-'); - - int yearValue = int.Parse(timeArray[0].Substring(2)); - String yearStr = "20" + yearValue.ToString("X2"); - - int monthValue = int.Parse(timeArray[1]); - String monthStr = monthValue.ToString("X2"); - - int dateValue = int.Parse(timeArray[2]); - String dateStr = dateValue.ToString("X2"); - - retCollTime = yearStr + "-" + monthStr + "-" + dateStr; - } - } else if (devPrefix.Equals("3112")) - { - if ((devCodeInt <= hnMax1 && devCodeInt >= hnMin1) || (devCodeInt <= hnMax2 && devCodeInt >= hnMin2)) - { - String[] timeArray = colltime.Split('-'); - - int yearValue = int.Parse(timeArray[0].Substring(2)); - String yearStr = "20" + yearValue.ToString("X2"); - - int monthValue = int.Parse(timeArray[1]); - String monthStr = monthValue.ToString("X2"); - - int dateValue = int.Parse(timeArray[2]); - String dateStr = dateValue.ToString("X2"); - - retCollTime = yearStr + "-" + monthStr + "-" + dateStr; - } - } - - return retCollTime; - } } } diff --git a/.gitignore b/.gitignore index 1a67bd4..57ed504 100644 --- a/.gitignore +++ b/.gitignore @@ -30,4 +30,10 @@ /SensorHub.WasteGas/obj /SensorHub.WaterMeter/obj /SensorHub.Well/obj +/SensorHub.WellPlus/obj +/SensorHub.WellPlus/bin +/SensorHub.Tube/obj +/SensorHub.Tube/bin +/SensorHub.HydrogenSulfide/obj +/SensorHub.HydrogenSulfide/bin /TestClass/obj \ No newline at end of file diff --git a/SensorHub.LG/LG.cs b/SensorHub.LG/LG.cs index 2caf218..f3d8674 100644 --- a/SensorHub.LG/LG.cs +++ b/SensorHub.LG/LG.cs @@ -26,6 +26,7 @@ String settings = requestInfo.Parameters[8]; String source = requestInfo.Parameters[9]; String sm4Key = requestInfo.Parameters[10]; + String errCode = requestInfo.Parameters[11]; String devName = "LG"; @@ -106,6 +107,16 @@ { SystemDateTag systemDateTag = (SystemDateTag)tag; collectDate = systemDateTag.CollectDate; + + // 单独处理时间字段异常的情况 + if (errCode.Contains("timeErr") == true) + { + int year = 2000 + Int32.Parse(tag.DataValue.Substring(0, 2)); + int month = Int32.Parse(tag.DataValue.Substring(2, 2)); + int day = Int32.Parse(tag.DataValue.Substring(4, 2)); + collectDate = year + "-" + month + "-" + day; + } + continue; } diff --git a/SensorHub.Methane/Methane.cs b/SensorHub.Methane/Methane.cs index 09c064d..52cfd3c 100644 --- a/SensorHub.Methane/Methane.cs +++ b/SensorHub.Methane/Methane.cs @@ -24,6 +24,7 @@ String settings = requestInfo.Parameters[8]; String source = requestInfo.Parameters[9]; String exist = requestInfo.Parameters[10]; + String errCode = requestInfo.Parameters[11]; String devName = "Methane"; @@ -109,6 +110,16 @@ { SystemDateTag systemDateTag = (SystemDateTag)tag; collectDate = systemDateTag.CollectDate; + + // 单独处理时间字段异常的情况 + if (errCode.Contains("timeErr") == true) + { + int year = 2000 + Int32.Parse(tag.DataValue.Substring(0, 2)); + int month = Int32.Parse(tag.DataValue.Substring(2, 2)); + int day = Int32.Parse(tag.DataValue.Substring(4, 2)); + collectDate = year + "-" + month + "-" + day; + } + continue; } @@ -171,9 +182,6 @@ TagHandler methaneHandler = new MethaneTagHandler(); methaneHandler.resolve(tag, session); - // 为环能和讯腾设备的uptime字段做特殊处理 - collectDate = changeTimeToBinForXT(devCode, collectDate); - DateTime baseTime = Convert.ToDateTime(collectDate + " " + methaneHandler.CollecTime); for (int i = 0; i < methaneHandler.DataList.Count; i++) { @@ -220,56 +228,5 @@ } } - - private String changeTimeToBinForXT(String devcode, String colltime) - { - String retCollTime = colltime; - int xtMin = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["xtMin"]); - int xtMax = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["xtMax"]); - int hnMin1 = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["hnMin1"]); - int hnMax1 = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["hnMax1"]); - int hnMin2 = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["hnMin2"]); - int hnMax2 = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["hnMax2"]); - - String devPrefix = devcode.Substring(0, 4); - int devCodeInt = Int32.Parse(devcode.Substring(4)); - if (devPrefix.Equals("3111")) - { - if (devCodeInt <= xtMax && devCodeInt >= xtMin) - { - String[] timeArray = colltime.Split('-'); - - int yearValue = int.Parse(timeArray[0].Substring(2)); - String yearStr = "20" + yearValue.ToString("X2"); - - int monthValue = int.Parse(timeArray[1]); - String monthStr = monthValue.ToString("X2"); - - int dateValue = int.Parse(timeArray[2]); - String dateStr = dateValue.ToString("X2"); - - retCollTime = yearStr + "-" + monthStr + "-" + dateStr; - } - } else if (devPrefix.Equals("3112")) - { - if ((devCodeInt <= hnMax1 && devCodeInt >= hnMin1) || (devCodeInt <= hnMax2 && devCodeInt >= hnMin2)) - { - String[] timeArray = colltime.Split('-'); - - int yearValue = int.Parse(timeArray[0].Substring(2)); - String yearStr = "20" + yearValue.ToString("X2"); - - int monthValue = int.Parse(timeArray[1]); - String monthStr = monthValue.ToString("X2"); - - int dateValue = int.Parse(timeArray[2]); - String dateStr = dateValue.ToString("X2"); - - retCollTime = yearStr + "-" + monthStr + "-" + dateStr; - } - } - - return retCollTime; - } } } diff --git a/SensorHub.Servers/Commands/CASICCommands/TagFactory.cs b/SensorHub.Servers/Commands/CASICCommands/TagFactory.cs index 1e974ff..56cfe87 100644 --- a/SensorHub.Servers/Commands/CASICCommands/TagFactory.cs +++ b/SensorHub.Servers/Commands/CASICCommands/TagFactory.cs @@ -80,5 +80,27 @@ } return tag; } + + public static bool CheckOID(String oid) + { + bool isOID = false; + + if (UploadTag.isUploadTag(oid)) + { + isOID = true; + } else + { + if (oid == SystemDateTag.SYSTEM_DATE_OID || oid == SystemTimeTag.SYSTEM_TIME_OID || + oid == CellTag.CELL_TAG_OID || oid == PCITag.PCI_TAG_OID || oid == RSRPTag.RSRP_TAG_OID || oid == SNRTag.SNR_TAG_OID || + oid == SoftwareVersionTag.SOFTWARE_VERSION_TAG_OID || oid == OffsetTag.OFFSET_TAG_OID || oid == SizeTag.SIZE_TAG_OID || + oid == SM4KeyTag.SM4KEY_TAG_OID || oid == SensorStartupTag.SENSOR_STARTUP_TAG_OID || + oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID || oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID || oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID) + { + isOID = true; + } + } + + return isOID; + } } } diff --git a/.gitignore b/.gitignore index 1a67bd4..57ed504 100644 --- a/.gitignore +++ b/.gitignore @@ -30,4 +30,10 @@ /SensorHub.WasteGas/obj /SensorHub.WaterMeter/obj /SensorHub.Well/obj +/SensorHub.WellPlus/obj +/SensorHub.WellPlus/bin +/SensorHub.Tube/obj +/SensorHub.Tube/bin +/SensorHub.HydrogenSulfide/obj +/SensorHub.HydrogenSulfide/bin /TestClass/obj \ No newline at end of file diff --git a/SensorHub.LG/LG.cs b/SensorHub.LG/LG.cs index 2caf218..f3d8674 100644 --- a/SensorHub.LG/LG.cs +++ b/SensorHub.LG/LG.cs @@ -26,6 +26,7 @@ String settings = requestInfo.Parameters[8]; String source = requestInfo.Parameters[9]; String sm4Key = requestInfo.Parameters[10]; + String errCode = requestInfo.Parameters[11]; String devName = "LG"; @@ -106,6 +107,16 @@ { SystemDateTag systemDateTag = (SystemDateTag)tag; collectDate = systemDateTag.CollectDate; + + // 单独处理时间字段异常的情况 + if (errCode.Contains("timeErr") == true) + { + int year = 2000 + Int32.Parse(tag.DataValue.Substring(0, 2)); + int month = Int32.Parse(tag.DataValue.Substring(2, 2)); + int day = Int32.Parse(tag.DataValue.Substring(4, 2)); + collectDate = year + "-" + month + "-" + day; + } + continue; } diff --git a/SensorHub.Methane/Methane.cs b/SensorHub.Methane/Methane.cs index 09c064d..52cfd3c 100644 --- a/SensorHub.Methane/Methane.cs +++ b/SensorHub.Methane/Methane.cs @@ -24,6 +24,7 @@ String settings = requestInfo.Parameters[8]; String source = requestInfo.Parameters[9]; String exist = requestInfo.Parameters[10]; + String errCode = requestInfo.Parameters[11]; String devName = "Methane"; @@ -109,6 +110,16 @@ { SystemDateTag systemDateTag = (SystemDateTag)tag; collectDate = systemDateTag.CollectDate; + + // 单独处理时间字段异常的情况 + if (errCode.Contains("timeErr") == true) + { + int year = 2000 + Int32.Parse(tag.DataValue.Substring(0, 2)); + int month = Int32.Parse(tag.DataValue.Substring(2, 2)); + int day = Int32.Parse(tag.DataValue.Substring(4, 2)); + collectDate = year + "-" + month + "-" + day; + } + continue; } @@ -171,9 +182,6 @@ TagHandler methaneHandler = new MethaneTagHandler(); methaneHandler.resolve(tag, session); - // 为环能和讯腾设备的uptime字段做特殊处理 - collectDate = changeTimeToBinForXT(devCode, collectDate); - DateTime baseTime = Convert.ToDateTime(collectDate + " " + methaneHandler.CollecTime); for (int i = 0; i < methaneHandler.DataList.Count; i++) { @@ -220,56 +228,5 @@ } } - - private String changeTimeToBinForXT(String devcode, String colltime) - { - String retCollTime = colltime; - int xtMin = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["xtMin"]); - int xtMax = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["xtMax"]); - int hnMin1 = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["hnMin1"]); - int hnMax1 = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["hnMax1"]); - int hnMin2 = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["hnMin2"]); - int hnMax2 = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["hnMax2"]); - - String devPrefix = devcode.Substring(0, 4); - int devCodeInt = Int32.Parse(devcode.Substring(4)); - if (devPrefix.Equals("3111")) - { - if (devCodeInt <= xtMax && devCodeInt >= xtMin) - { - String[] timeArray = colltime.Split('-'); - - int yearValue = int.Parse(timeArray[0].Substring(2)); - String yearStr = "20" + yearValue.ToString("X2"); - - int monthValue = int.Parse(timeArray[1]); - String monthStr = monthValue.ToString("X2"); - - int dateValue = int.Parse(timeArray[2]); - String dateStr = dateValue.ToString("X2"); - - retCollTime = yearStr + "-" + monthStr + "-" + dateStr; - } - } else if (devPrefix.Equals("3112")) - { - if ((devCodeInt <= hnMax1 && devCodeInt >= hnMin1) || (devCodeInt <= hnMax2 && devCodeInt >= hnMin2)) - { - String[] timeArray = colltime.Split('-'); - - int yearValue = int.Parse(timeArray[0].Substring(2)); - String yearStr = "20" + yearValue.ToString("X2"); - - int monthValue = int.Parse(timeArray[1]); - String monthStr = monthValue.ToString("X2"); - - int dateValue = int.Parse(timeArray[2]); - String dateStr = dateValue.ToString("X2"); - - retCollTime = yearStr + "-" + monthStr + "-" + dateStr; - } - } - - return retCollTime; - } } } diff --git a/SensorHub.Servers/Commands/CASICCommands/TagFactory.cs b/SensorHub.Servers/Commands/CASICCommands/TagFactory.cs index 1e974ff..56cfe87 100644 --- a/SensorHub.Servers/Commands/CASICCommands/TagFactory.cs +++ b/SensorHub.Servers/Commands/CASICCommands/TagFactory.cs @@ -80,5 +80,27 @@ } return tag; } + + public static bool CheckOID(String oid) + { + bool isOID = false; + + if (UploadTag.isUploadTag(oid)) + { + isOID = true; + } else + { + if (oid == SystemDateTag.SYSTEM_DATE_OID || oid == SystemTimeTag.SYSTEM_TIME_OID || + oid == CellTag.CELL_TAG_OID || oid == PCITag.PCI_TAG_OID || oid == RSRPTag.RSRP_TAG_OID || oid == SNRTag.SNR_TAG_OID || + oid == SoftwareVersionTag.SOFTWARE_VERSION_TAG_OID || oid == OffsetTag.OFFSET_TAG_OID || oid == SizeTag.SIZE_TAG_OID || + oid == SM4KeyTag.SM4KEY_TAG_OID || oid == SensorStartupTag.SENSOR_STARTUP_TAG_OID || + oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID || oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID || oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID) + { + isOID = true; + } + } + + return isOID; + } } } diff --git a/SensorHub.Servers/Common.cs b/SensorHub.Servers/Common.cs index 93b4e97..978069f 100644 --- a/SensorHub.Servers/Common.cs +++ b/SensorHub.Servers/Common.cs @@ -426,12 +426,18 @@ //get each tag from strTag and construct tag list; String oid = strTags.Substring(i, 8); - int len = Int16.Parse(strTags.Substring(i + 8, 4), System.Globalization.NumberStyles.HexNumber); - String value = strTags.Substring(i + 12, len * 2); - i = i + 12 + 2 * len; - //TODO LIST:Construct a tag according to oid - Tag tag = TagFactory.create(oid, len, value); - tags.Add(tag); + if (TagFactory.CheckOID(oid) == true) + { + int len = Int16.Parse(strTags.Substring(i + 8, 4), System.Globalization.NumberStyles.HexNumber); + String value = strTags.Substring(i + 12, len * 2); + i = i + 12 + 2 * len; + //TODO LIST:Construct a tag according to oid + Tag tag = TagFactory.create(oid, len, value); + tags.Add(tag); + } else + { + i += 8; // 不属于合法的OID,舍弃 + } } } catch (Exception e) diff --git a/.gitignore b/.gitignore index 1a67bd4..57ed504 100644 --- a/.gitignore +++ b/.gitignore @@ -30,4 +30,10 @@ /SensorHub.WasteGas/obj /SensorHub.WaterMeter/obj /SensorHub.Well/obj +/SensorHub.WellPlus/obj +/SensorHub.WellPlus/bin +/SensorHub.Tube/obj +/SensorHub.Tube/bin +/SensorHub.HydrogenSulfide/obj +/SensorHub.HydrogenSulfide/bin /TestClass/obj \ No newline at end of file diff --git a/SensorHub.LG/LG.cs b/SensorHub.LG/LG.cs index 2caf218..f3d8674 100644 --- a/SensorHub.LG/LG.cs +++ b/SensorHub.LG/LG.cs @@ -26,6 +26,7 @@ String settings = requestInfo.Parameters[8]; String source = requestInfo.Parameters[9]; String sm4Key = requestInfo.Parameters[10]; + String errCode = requestInfo.Parameters[11]; String devName = "LG"; @@ -106,6 +107,16 @@ { SystemDateTag systemDateTag = (SystemDateTag)tag; collectDate = systemDateTag.CollectDate; + + // 单独处理时间字段异常的情况 + if (errCode.Contains("timeErr") == true) + { + int year = 2000 + Int32.Parse(tag.DataValue.Substring(0, 2)); + int month = Int32.Parse(tag.DataValue.Substring(2, 2)); + int day = Int32.Parse(tag.DataValue.Substring(4, 2)); + collectDate = year + "-" + month + "-" + day; + } + continue; } diff --git a/SensorHub.Methane/Methane.cs b/SensorHub.Methane/Methane.cs index 09c064d..52cfd3c 100644 --- a/SensorHub.Methane/Methane.cs +++ b/SensorHub.Methane/Methane.cs @@ -24,6 +24,7 @@ String settings = requestInfo.Parameters[8]; String source = requestInfo.Parameters[9]; String exist = requestInfo.Parameters[10]; + String errCode = requestInfo.Parameters[11]; String devName = "Methane"; @@ -109,6 +110,16 @@ { SystemDateTag systemDateTag = (SystemDateTag)tag; collectDate = systemDateTag.CollectDate; + + // 单独处理时间字段异常的情况 + if (errCode.Contains("timeErr") == true) + { + int year = 2000 + Int32.Parse(tag.DataValue.Substring(0, 2)); + int month = Int32.Parse(tag.DataValue.Substring(2, 2)); + int day = Int32.Parse(tag.DataValue.Substring(4, 2)); + collectDate = year + "-" + month + "-" + day; + } + continue; } @@ -171,9 +182,6 @@ TagHandler methaneHandler = new MethaneTagHandler(); methaneHandler.resolve(tag, session); - // 为环能和讯腾设备的uptime字段做特殊处理 - collectDate = changeTimeToBinForXT(devCode, collectDate); - DateTime baseTime = Convert.ToDateTime(collectDate + " " + methaneHandler.CollecTime); for (int i = 0; i < methaneHandler.DataList.Count; i++) { @@ -220,56 +228,5 @@ } } - - private String changeTimeToBinForXT(String devcode, String colltime) - { - String retCollTime = colltime; - int xtMin = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["xtMin"]); - int xtMax = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["xtMax"]); - int hnMin1 = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["hnMin1"]); - int hnMax1 = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["hnMax1"]); - int hnMin2 = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["hnMin2"]); - int hnMax2 = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["hnMax2"]); - - String devPrefix = devcode.Substring(0, 4); - int devCodeInt = Int32.Parse(devcode.Substring(4)); - if (devPrefix.Equals("3111")) - { - if (devCodeInt <= xtMax && devCodeInt >= xtMin) - { - String[] timeArray = colltime.Split('-'); - - int yearValue = int.Parse(timeArray[0].Substring(2)); - String yearStr = "20" + yearValue.ToString("X2"); - - int monthValue = int.Parse(timeArray[1]); - String monthStr = monthValue.ToString("X2"); - - int dateValue = int.Parse(timeArray[2]); - String dateStr = dateValue.ToString("X2"); - - retCollTime = yearStr + "-" + monthStr + "-" + dateStr; - } - } else if (devPrefix.Equals("3112")) - { - if ((devCodeInt <= hnMax1 && devCodeInt >= hnMin1) || (devCodeInt <= hnMax2 && devCodeInt >= hnMin2)) - { - String[] timeArray = colltime.Split('-'); - - int yearValue = int.Parse(timeArray[0].Substring(2)); - String yearStr = "20" + yearValue.ToString("X2"); - - int monthValue = int.Parse(timeArray[1]); - String monthStr = monthValue.ToString("X2"); - - int dateValue = int.Parse(timeArray[2]); - String dateStr = dateValue.ToString("X2"); - - retCollTime = yearStr + "-" + monthStr + "-" + dateStr; - } - } - - return retCollTime; - } } } diff --git a/SensorHub.Servers/Commands/CASICCommands/TagFactory.cs b/SensorHub.Servers/Commands/CASICCommands/TagFactory.cs index 1e974ff..56cfe87 100644 --- a/SensorHub.Servers/Commands/CASICCommands/TagFactory.cs +++ b/SensorHub.Servers/Commands/CASICCommands/TagFactory.cs @@ -80,5 +80,27 @@ } return tag; } + + public static bool CheckOID(String oid) + { + bool isOID = false; + + if (UploadTag.isUploadTag(oid)) + { + isOID = true; + } else + { + if (oid == SystemDateTag.SYSTEM_DATE_OID || oid == SystemTimeTag.SYSTEM_TIME_OID || + oid == CellTag.CELL_TAG_OID || oid == PCITag.PCI_TAG_OID || oid == RSRPTag.RSRP_TAG_OID || oid == SNRTag.SNR_TAG_OID || + oid == SoftwareVersionTag.SOFTWARE_VERSION_TAG_OID || oid == OffsetTag.OFFSET_TAG_OID || oid == SizeTag.SIZE_TAG_OID || + oid == SM4KeyTag.SM4KEY_TAG_OID || oid == SensorStartupTag.SENSOR_STARTUP_TAG_OID || + oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID || oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID || oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID) + { + isOID = true; + } + } + + return isOID; + } } } diff --git a/SensorHub.Servers/Common.cs b/SensorHub.Servers/Common.cs index 93b4e97..978069f 100644 --- a/SensorHub.Servers/Common.cs +++ b/SensorHub.Servers/Common.cs @@ -426,12 +426,18 @@ //get each tag from strTag and construct tag list; String oid = strTags.Substring(i, 8); - int len = Int16.Parse(strTags.Substring(i + 8, 4), System.Globalization.NumberStyles.HexNumber); - String value = strTags.Substring(i + 12, len * 2); - i = i + 12 + 2 * len; - //TODO LIST:Construct a tag according to oid - Tag tag = TagFactory.create(oid, len, value); - tags.Add(tag); + if (TagFactory.CheckOID(oid) == true) + { + int len = Int16.Parse(strTags.Substring(i + 8, 4), System.Globalization.NumberStyles.HexNumber); + String value = strTags.Substring(i + 12, len * 2); + i = i + 12 + 2 * len; + //TODO LIST:Construct a tag according to oid + Tag tag = TagFactory.create(oid, len, value); + tags.Add(tag); + } else + { + i += 8; // 不属于合法的OID,舍弃 + } } } catch (Exception e) diff --git a/SensorHub.Servers/NASDK.cs b/SensorHub.Servers/NASDK.cs index a8ed778..56c7611 100644 --- a/SensorHub.Servers/NASDK.cs +++ b/SensorHub.Servers/NASDK.cs @@ -183,12 +183,17 @@ private static string GetWindowsServiceInstallPath(string ServiceName) { string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName; - string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString(); - //替换掉双引号 - path = path.Replace("\"", string.Empty); + if (Registry.LocalMachine.OpenSubKey(key) != null) + { + string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString(); + //替换掉双引号 + path = path.Replace("\"", string.Empty); - FileInfo fi = new FileInfo(path); - return fi.Directory.ToString(); + FileInfo fi = new FileInfo(path); + return fi.Directory.ToString(); + } + + return ""; } } } diff --git a/.gitignore b/.gitignore index 1a67bd4..57ed504 100644 --- a/.gitignore +++ b/.gitignore @@ -30,4 +30,10 @@ /SensorHub.WasteGas/obj /SensorHub.WaterMeter/obj /SensorHub.Well/obj +/SensorHub.WellPlus/obj +/SensorHub.WellPlus/bin +/SensorHub.Tube/obj +/SensorHub.Tube/bin +/SensorHub.HydrogenSulfide/obj +/SensorHub.HydrogenSulfide/bin /TestClass/obj \ No newline at end of file diff --git a/SensorHub.LG/LG.cs b/SensorHub.LG/LG.cs index 2caf218..f3d8674 100644 --- a/SensorHub.LG/LG.cs +++ b/SensorHub.LG/LG.cs @@ -26,6 +26,7 @@ String settings = requestInfo.Parameters[8]; String source = requestInfo.Parameters[9]; String sm4Key = requestInfo.Parameters[10]; + String errCode = requestInfo.Parameters[11]; String devName = "LG"; @@ -106,6 +107,16 @@ { SystemDateTag systemDateTag = (SystemDateTag)tag; collectDate = systemDateTag.CollectDate; + + // 单独处理时间字段异常的情况 + if (errCode.Contains("timeErr") == true) + { + int year = 2000 + Int32.Parse(tag.DataValue.Substring(0, 2)); + int month = Int32.Parse(tag.DataValue.Substring(2, 2)); + int day = Int32.Parse(tag.DataValue.Substring(4, 2)); + collectDate = year + "-" + month + "-" + day; + } + continue; } diff --git a/SensorHub.Methane/Methane.cs b/SensorHub.Methane/Methane.cs index 09c064d..52cfd3c 100644 --- a/SensorHub.Methane/Methane.cs +++ b/SensorHub.Methane/Methane.cs @@ -24,6 +24,7 @@ String settings = requestInfo.Parameters[8]; String source = requestInfo.Parameters[9]; String exist = requestInfo.Parameters[10]; + String errCode = requestInfo.Parameters[11]; String devName = "Methane"; @@ -109,6 +110,16 @@ { SystemDateTag systemDateTag = (SystemDateTag)tag; collectDate = systemDateTag.CollectDate; + + // 单独处理时间字段异常的情况 + if (errCode.Contains("timeErr") == true) + { + int year = 2000 + Int32.Parse(tag.DataValue.Substring(0, 2)); + int month = Int32.Parse(tag.DataValue.Substring(2, 2)); + int day = Int32.Parse(tag.DataValue.Substring(4, 2)); + collectDate = year + "-" + month + "-" + day; + } + continue; } @@ -171,9 +182,6 @@ TagHandler methaneHandler = new MethaneTagHandler(); methaneHandler.resolve(tag, session); - // 为环能和讯腾设备的uptime字段做特殊处理 - collectDate = changeTimeToBinForXT(devCode, collectDate); - DateTime baseTime = Convert.ToDateTime(collectDate + " " + methaneHandler.CollecTime); for (int i = 0; i < methaneHandler.DataList.Count; i++) { @@ -220,56 +228,5 @@ } } - - private String changeTimeToBinForXT(String devcode, String colltime) - { - String retCollTime = colltime; - int xtMin = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["xtMin"]); - int xtMax = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["xtMax"]); - int hnMin1 = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["hnMin1"]); - int hnMax1 = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["hnMax1"]); - int hnMin2 = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["hnMin2"]); - int hnMax2 = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["hnMax2"]); - - String devPrefix = devcode.Substring(0, 4); - int devCodeInt = Int32.Parse(devcode.Substring(4)); - if (devPrefix.Equals("3111")) - { - if (devCodeInt <= xtMax && devCodeInt >= xtMin) - { - String[] timeArray = colltime.Split('-'); - - int yearValue = int.Parse(timeArray[0].Substring(2)); - String yearStr = "20" + yearValue.ToString("X2"); - - int monthValue = int.Parse(timeArray[1]); - String monthStr = monthValue.ToString("X2"); - - int dateValue = int.Parse(timeArray[2]); - String dateStr = dateValue.ToString("X2"); - - retCollTime = yearStr + "-" + monthStr + "-" + dateStr; - } - } else if (devPrefix.Equals("3112")) - { - if ((devCodeInt <= hnMax1 && devCodeInt >= hnMin1) || (devCodeInt <= hnMax2 && devCodeInt >= hnMin2)) - { - String[] timeArray = colltime.Split('-'); - - int yearValue = int.Parse(timeArray[0].Substring(2)); - String yearStr = "20" + yearValue.ToString("X2"); - - int monthValue = int.Parse(timeArray[1]); - String monthStr = monthValue.ToString("X2"); - - int dateValue = int.Parse(timeArray[2]); - String dateStr = dateValue.ToString("X2"); - - retCollTime = yearStr + "-" + monthStr + "-" + dateStr; - } - } - - return retCollTime; - } } } diff --git a/SensorHub.Servers/Commands/CASICCommands/TagFactory.cs b/SensorHub.Servers/Commands/CASICCommands/TagFactory.cs index 1e974ff..56cfe87 100644 --- a/SensorHub.Servers/Commands/CASICCommands/TagFactory.cs +++ b/SensorHub.Servers/Commands/CASICCommands/TagFactory.cs @@ -80,5 +80,27 @@ } return tag; } + + public static bool CheckOID(String oid) + { + bool isOID = false; + + if (UploadTag.isUploadTag(oid)) + { + isOID = true; + } else + { + if (oid == SystemDateTag.SYSTEM_DATE_OID || oid == SystemTimeTag.SYSTEM_TIME_OID || + oid == CellTag.CELL_TAG_OID || oid == PCITag.PCI_TAG_OID || oid == RSRPTag.RSRP_TAG_OID || oid == SNRTag.SNR_TAG_OID || + oid == SoftwareVersionTag.SOFTWARE_VERSION_TAG_OID || oid == OffsetTag.OFFSET_TAG_OID || oid == SizeTag.SIZE_TAG_OID || + oid == SM4KeyTag.SM4KEY_TAG_OID || oid == SensorStartupTag.SENSOR_STARTUP_TAG_OID || + oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID || oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID || oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID) + { + isOID = true; + } + } + + return isOID; + } } } diff --git a/SensorHub.Servers/Common.cs b/SensorHub.Servers/Common.cs index 93b4e97..978069f 100644 --- a/SensorHub.Servers/Common.cs +++ b/SensorHub.Servers/Common.cs @@ -426,12 +426,18 @@ //get each tag from strTag and construct tag list; String oid = strTags.Substring(i, 8); - int len = Int16.Parse(strTags.Substring(i + 8, 4), System.Globalization.NumberStyles.HexNumber); - String value = strTags.Substring(i + 12, len * 2); - i = i + 12 + 2 * len; - //TODO LIST:Construct a tag according to oid - Tag tag = TagFactory.create(oid, len, value); - tags.Add(tag); + if (TagFactory.CheckOID(oid) == true) + { + int len = Int16.Parse(strTags.Substring(i + 8, 4), System.Globalization.NumberStyles.HexNumber); + String value = strTags.Substring(i + 12, len * 2); + i = i + 12 + 2 * len; + //TODO LIST:Construct a tag according to oid + Tag tag = TagFactory.create(oid, len, value); + tags.Add(tag); + } else + { + i += 8; // 不属于合法的OID,舍弃 + } } } catch (Exception e) diff --git a/SensorHub.Servers/NASDK.cs b/SensorHub.Servers/NASDK.cs index a8ed778..56c7611 100644 --- a/SensorHub.Servers/NASDK.cs +++ b/SensorHub.Servers/NASDK.cs @@ -183,12 +183,17 @@ private static string GetWindowsServiceInstallPath(string ServiceName) { string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName; - string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString(); - //替换掉双引号 - path = path.Replace("\"", string.Empty); + if (Registry.LocalMachine.OpenSubKey(key) != null) + { + string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString(); + //替换掉双引号 + path = path.Replace("\"", string.Empty); - FileInfo fi = new FileInfo(path); - return fi.Directory.ToString(); + FileInfo fi = new FileInfo(path); + return fi.Directory.ToString(); + } + + return ""; } } } diff --git a/SensorHub.Servers/TelecomReceiveFilter.cs b/SensorHub.Servers/TelecomReceiveFilter.cs index d28a40f..23369e5 100644 --- a/SensorHub.Servers/TelecomReceiveFilter.cs +++ b/SensorHub.Servers/TelecomReceiveFilter.cs @@ -12,6 +12,8 @@ using SensorHub.Servers.SM4; using System.IO; using System.Configuration; +using MySql.Data.MySqlClient; +using System.Data; namespace SensorHub.Servers { @@ -82,6 +84,8 @@ } //////////////////////////////////////////////////////////////////////// + string extraErrCode = GetXunTengExtraByDevice(deviceId); + if (routeFlag == "03") { //对tag进行TEA解密 @@ -98,17 +102,71 @@ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18); String plainText = SM4Utils.sm4Decrypt(dat, deviceId); - settings = plainText.Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2); + if (extraErrCode.Contains("lengthErr") == true) + { + // 长度不正确,把解密后所有的字符都当成settings字段进行解析 + settings = plainText; + } else + { + settings = plainText.Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2); + } } result = Common.getDeviceTypeByPdu(pduType); + // 燃气液位一体化设备类型错误处理 + if (extraErrCode.Contains("typeLGErr") == true) + { + // 设备编号是32开头的,直接将设备类型固定为燃液一体化设备 + if (deviceId.StartsWith("32")) + { + result = "LG"; + } + } + result += ":" + preamble + "," + version + "," + leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," + - seq + "," + settings + "," + telecomDeviceId + "," + exist; + seq + "," + settings + "," + telecomDeviceId + "," + exist + "," + extraErrCode; BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ","); return m_Parser.ParseRequestInfo(result); } + + private string GetXunTengExtraByDevice(String deviceId) + { + MySqlParameter[] param = new MySqlParameter[]{ new MySqlParameter("@DEVCODE",deviceId) }; + + string xtErrCode = ""; + + try + { + DataTable dt = SensorHub.Servers.MySql.MySqlHelper.GetDataSet("select devcode, length_err, type_lg_err, time_err from bus_device_extra11 where devcode=@DEVCODE", param).Tables[0]; + if (dt.Rows.Count > 0) + { + if (dt.Rows[0]["LENGTH_ERR"] != null && dt.Rows[0]["LENGTH_ERR"].ToString().Equals("") == false) + { + xtErrCode += "lengthErr;"; + } + if (dt.Rows[0]["TYPE_LG_ERR"] != null && dt.Rows[0]["TYPE_LG_ERR"].ToString().Equals("") == false) + { + xtErrCode += "typeLGErr;"; + } + if (dt.Rows[0]["TIME_ERR"] != null && dt.Rows[0]["TIME_ERR"].ToString().Equals("") == false) + { + xtErrCode += "timeErr;"; + } + } + else + { + return ""; + } + } catch (Exception ex) + { + return ""; + } + + + return xtErrCode.Substring(0, xtErrCode.Length - 1); + } } }