コード例 #1
0
ファイル: MsDbAccessor.cs プロジェクト: icprog/FS-SMISCloud
        // 获取传感器参数定义。
        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);
                }
            }
        }
コード例 #2
0
        // 获取传感器参数定义。
        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);
                }
            }
        }
コード例 #3
0
ファイル: DacTest.cs プロジェクト: icprog/FS-SMISCloud
        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);
        }
コード例 #4
0
        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"));
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        /// <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);
            }
        }