// 获取传感器参数定义。 private void GetParameters(DataTable table, Sensor sensor, Dictionary <int, FormulaParam> formulaParamDict) { var sr = from r in table.AsEnumerable() where r.Field <int>("SENSOR_ID") == sensor.SensorID select r; if (!sr.Any()) { return; } foreach (DataRow row in sr) { for (int i = 1; i < 7; i++) { string pName = string.Format("FormulaParaID{0}", i); string pValue = string.Format("Parameter{0}", i); if (row.IsNull(pName)) { break; } int pid = Convert.ToInt32(row[pName]); FormulaParam temp = this.GetFormulaParam(pid, formulaParamDict); var pi = new SensorParam(temp); if (row.IsNull(pValue)) { Console.WriteLine("Sensor: {0}'s param: {1}-{2} 's value is NULL!", sensor.SensorID, i, temp.Name); } pi.Value = row.IsNull(pValue) ? 0 : Convert.ToDouble(row[pValue]); sensor.AddParameter(pi); } } }
// 获取传感器参数定义。 private void GetParameters(DataTable table, Sensor sensor) { var sr = from r in table.AsEnumerable() where r.Field <int>("SENSOR_SET_ID") == sensor.SensorID select r; if (!sr.Any()) { return; } foreach (DataRow row in sr) { ushort paraCount = Convert.ToUInt16(row["ParaCount"]); for (int i = 1; i <= paraCount; i++) { string pName = string.Format("PARA_NAME_ID{0}", i); string pValue = string.Format("PARAMETER{0}", i); if (row.IsNull(pName)) { break; } int pid = Convert.ToInt32(row[pName]); FormulaParam temp = GetFormulaParam(pid); SensorParam pi = new SensorParam(temp); if (row.IsNull(pValue)) { // TODO write Log. Console.WriteLine("Sensor: {0}'s param: {1}-{2} 's value is NULL!", sensor.SensorID, i, temp.Name); } pi.Value = row.IsNull(pValue) ? 0 : Convert.ToDouble(row[pValue]); sensor.AddParameter(pi); } } }
public Sensor GetSensor(Sensor sensor) { sensor.SensorID = 32; sensor.StructId = 4; sensor.ModuleNo = 9590; sensor.ChannelNo = 1; sensor.Name = "K791左侧三阶平台2号测斜孔-中"; sensor.FactorType = 10; sensor.FactorTypeTable = "T_THEMES_DEFORMATION_DEEP_DISPLACEMENT"; sensor.TableColums = "DEEP_DISPLACEMENT_X_VALUE,DEEP_DISPLACEMENT_Y_VALUE,DEEP_CUMULATIVEDISPLACEMENT_X_VALUE,DEEP_CUMULATIVEDISPLACEMENT_Y_VALUE"; sensor.ProductCode = "FS-GGC01"; sensor.ProtocolType = 1503; var para = new SensorParam(new FormulaParam { FID = 2, Index = 1, Name = "x0", Alias = "x方向角度初值", PID = 20 }) { Value = 0.7675540000000 }; sensor.AddParameter(para); para = new SensorParam(new FormulaParam { FID = 2, Index = 2, Name = "y0", Alias = "y方向角度初值", PID = 21 }) { Value = -0.0599570000000 }; sensor.AddParameter(para); para = new SensorParam(new FormulaParam { FID = 2, Index = 1, Name = "len", Alias = "测斜杆长度(mm)", PID = 20 }) { Value = 3000.0000000000000 }; sensor.AddParameter(para); return(sensor); }
public void TestGetDtus() { DbAccessorHelper.Init(new MsDbAccessor(connstr)); IList <DtuNode> dtus = DbAccessorHelper.DbAccessor.QueryDtuNodes(); Assert.IsTrue(dtus != null); Assert.IsTrue(dtus.Count > 0); return; DtuNode d0 = dtus[0]; Assert.AreEqual((ushort)1, d0.DtuId); Assert.AreEqual("20120049", d0.DtuCode); Assert.AreEqual("K765集中采集站箱内", d0.Name); Assert.AreEqual((uint)300, d0.DacInterval); // 5m // dtuId sid mno cno factor PRODUCT_SENSOR_ID PROTOCOL_CODE name // 1 17 9596 1 10 82 1503 K765左侧一阶平台1号测斜孔-下 IList <Sensor> sensors = d0.Sensors; Assert.IsTrue(sensors.Count > 0); Sensor s1 = sensors[0]; Assert.AreEqual((uint)1, s1.DtuID); Assert.AreEqual((uint)17, s1.SensorID); Assert.AreEqual((uint)9596, s1.ModuleNo); // param. SensorParam sp1 = s1.Parameters[0]; Assert.AreEqual(-0.2969320000000, sp1.Value); SensorParam sp3 = s1.Parameters[2]; Assert.AreEqual(600, sp3.Value); Assert.AreEqual("GPRS", d0.NetworkType.ToString().ToUpper()); DtuNode dx = dtus.First(d => d.DtuCode == "20141015"); //Assert.AreEqual("GNSS_NMEA0183", dx.NetworkType); Assert.AreEqual("hclocal", dx.NetworkType.ToString()); Assert.AreEqual(@"C:\华测\HCMonitor 1.0\HCMonitor 1.0\Resultcsv\Net01.csv", dx.GetProperty("param1")); Assert.AreEqual(string.Empty, dx.GetProperty("param2")); }
public void TestGetDtus() { var cs = connstr.Split(','); DbAccessorHelper.Init(new SQLiteDbAccessor(cs[0])); IList <DtuNode> dtus = DbAccessorHelper.DbAccessor.QueryDtuNodes(); Assert.IsTrue(dtus != null); Assert.IsTrue(dtus.Count > 0); DtuNode d0 = dtus[0]; Assert.AreEqual((ushort)2, d0.DtuId); Assert.AreEqual("COM6", d0.DtuCode); Assert.AreEqual((uint)300, d0.DacInterval); // 5m // dtuId sid mno cno factor PRODUCT_SENSOR_ID PROTOCOL_CODE name // 1 17 9596 1 10 82 1503 K765左侧一阶平台1号测斜孔-下 IList <Sensor> sensors = d0.Sensors; Assert.IsTrue(sensors.Count > 0); Sensor s1 = sensors[0]; Assert.AreEqual((uint)2, s1.DtuID); Assert.AreEqual((uint)1, s1.SensorID); Assert.AreEqual((uint)9877, s1.ModuleNo); DtuNode d91 = dtus.Last(); Sensor s89 = d91.FindSensor(89); //89号传感器. 参数, 2, 归属公式: 9, 类型 28,27 // param. SensorParam sp0 = s89.Parameters[0]; Assert.AreEqual(9, sp0.FormulaParam.FID); Assert.AreEqual(27, sp0.FormulaParam.PID); }
/// <summary> /// 获取sensor实例 /// </summary> /// <param name="sensor"></param> /// <returns></returns> private Entity.Config.Sensor GetSensor(T_DIM_SENSOR sensor) { using (var db = new SecureCloud_Entities()) { if (sensor == null) { return(null); } var sensinfo = (from p in db.T_DIM_SENSOR_PRODUCT from s in db.T_DIM_PROTOCOL_TYPE from f in db.T_DIM_SAFETY_FACTOR_TYPE where p.PROTOCOL_ID == s.PROTOCOL_ID && p.PRODUCT_ID == sensor.PRODUCT_SENSOR_ID && f.SAFETY_FACTOR_TYPE_ID == sensor.SAFETY_FACTOR_TYPE_ID select new { p.PRODUCT_ID, p.PRODUCT_CODE, p.FORMAULAID, s.PROTOCOL_CODE, f.THEMES_TABLE_NAME, f.THEMES_COLUMNS }) .FirstOrDefault(); string dtucode = (from d in db.T_DIM_REMOTE_DTU where d.ID == sensor.DTU_ID select d.REMOTE_DTU_NUMBER).FirstOrDefault(); if (sensinfo == null) { return(null); } var sensorinfo = new Entity.Config.Sensor { SensorID = (uint)sensor.SENSOR_ID, StructId = sensor.STRUCT_ID == null ? 0 : (uint)sensor.STRUCT_ID, DtuID = sensor.DTU_ID == null ? 0 : (uint)sensor.DTU_ID, DtuCode = dtucode, ModuleNo = sensor.MODULE_NO == null ? 0 : (uint)sensor.MODULE_NO, ChannelNo = sensor.DAI_CHANNEL_NUMBER == null ? 0 : (uint)sensor.DAI_CHANNEL_NUMBER, Name = sensor.SENSOR_LOCATION_DESCRIPTION, ProtocolType = Convert.ToUInt32(sensinfo.PROTOCOL_CODE), FormulaID = sensinfo.FORMAULAID == null ? 0 : (uint)sensinfo.FORMAULAID, FactorType = sensor.SAFETY_FACTOR_TYPE_ID == null ? 0 : (uint)sensor.SAFETY_FACTOR_TYPE_ID, FactorTypeTable = sensinfo.THEMES_TABLE_NAME, TableColums = sensinfo.THEMES_COLUMNS, ProductCode = sensinfo.PRODUCT_CODE, ProductId = sensinfo.PRODUCT_ID, SensorType = (SensorType)sensor.Identification, //TODO 3-3 UnEnable = sensor.Enable }; if (sensinfo.FORMAULAID != null) { var pname = (from pf in db.T_DIM_FORMULA_PARA from pn in db.T_DIM_FORMULA_PARA_NAME where pf.ParaNameID == pn.ParaNameID && pf.FormulaID == sensinfo.FORMAULAID orderby pf.Order select new { pf.FormulaID, pf.FormulaParaID, pn.ParaName, pn.ParaAlias, pf.Order } ).ToList(); //sensorinfo.ParamCount = (ushort)pname.Count; T_DIM_FORMULAID_SET param0 = (from pf in db.T_DIM_FORMULAID_SET where pf.SENSOR_ID == sensor.SENSOR_ID select pf).ToList().FirstOrDefault(); if (param0 == null) { return(sensorinfo); } for (int i = 0; i < pname.Count; i++) { var f = new FormulaParam { FID = (int)pname[i].FormulaID, PID = pname[i].FormulaParaID, Index = (int)pname[i].Order, Name = pname[i].ParaName, Alias = pname[i].ParaAlias }; var sp = new SensorParam(f) { Value = Convert.ToDouble(param0.GetType() .GetProperty("Parameter" + (i + 1)) .GetValue(param0, null)) }; sensorinfo.AddParameter(sp); } } //else //{ // sensorinfo.ParamCount = 0; //} return(sensorinfo); } }