public void TestSQLiteRegularTask() { // Client Simulator var cs = this.sqliteConStr.Split(','); DbAccessorHelper.Init(new SQLiteDbAccessor(cs[0])); // Thread.Sleep(8000); ComDtuServer _server = new ComDtuServer(); _server.Start(); string tid = new Guid().ToString(); List <uint> sensors = new List <uint> { (uint)17 }; DACTask ut = new DACTask(tid, 1, sensors, TaskType.INSTANT, this.OnTaskFinished); // tm = new DACTaskManager(_server, DbAccessorHelper.DbAccessor.QueryDtuNodes(), null, DtuType.Com); DACTaskManager.SensorMatcher = (sensor) => { return(true); }; //DACTaskManager.OnTimerDacFinished = (DACTaskResult r) => //{ //}; tm.ArrangeTimedTask(); Thread.Sleep(30000); // int r = tm.ArrangeInstantTask(tid, 1, sensors, this.OnTaskFinished, false); // System.Console.WriteLine("result = {0}", r); }
public void TestProcessResult() { DbAccessorHelper.Init(new MsDbAccessor("server=192.168.1.128;database=DW_iSecureCloud_Empty2.2;uid=sa;pwd=861004;pooling=false")); IDtuServer _dacServer; _dacServer = new GprsDtuServer(5005); DACTaskManager Dtm = new DACTaskManager(_dacServer, DbAccessorHelper.DbAccessor.QueryDtuNodes(), null); var rslt = new DACTaskResult(); rslt.AddSensorResult( new SensorAcqResult { ErrorCode = 103, Sensor = new Sensor { SensorID = 1, ProductId = 145 }, Data = new LVDTData(560, 20) }); rslt.AddSensorResult( new SensorAcqResult { Sensor = new Sensor { SensorID = 2, ProductId = 145 }, Data = new LVDTData(560, 20) }); rslt.AddSensorResult( new SensorAcqResult { Sensor = new Sensor { SensorID = 3, ProductId = 70 }, Data = new TempHumidityData(180, -2) }); new EtDataStatusConsumer(null) .ProcessResult(rslt); Assert.Pass(); }
public void Init(Dictionary <string, string> args) { if (_initialized) { return; } _initialized = true; string dbMapFile = args["sqlitedbcongxml"]; Log.DebugFormat("Loading mapping from {0}", dbMapFile); var ldcx = new LoadDbConfigXml(dbMapFile); string[] connStrs = ldcx.GetSqlConnectionStrings("/config/databases"); if (connStrs == null || connStrs.Length == 0) { return; } sqlHelper = SqlHelperFactory.Create(DbType.SQLite, connStrs[0]); DbAccessorHelper.Init(new SQLiteDbAccessor(connStrs[0])); //IList<DtuNode> nodes = DbAccessorHelper.DbAccessor.QueryDtuNodes(null); //_sensors = new Dictionary<uint, Sensor>(); //foreach (DtuNode dn in nodes) //{ // if (dn.Sensors == null) continue; // foreach (Sensor si in dn.Sensors) // { // _sensors[si.SensorID] = si; // } //} //var catalog = new AssemblyCatalog(typeof(IDataSerializer).Assembly); //CompositionContainer cc = new CompositionContainer(catalog); //cc.ComposeParts(this); DataSourseTableInfo[] tableInfos = ldcx.GetDataSourseTableInfo("/config/databases"); this.DoUpdateAsNecessary(tableInfos); }
public void TestHcGpsReadData() { DbAccessorHelper.Init(new MsDbAccessor(connstr)); string filePath = @"FileData\Net01.csv"; IFileSensorAdapter sa = new Gps_HC_SensorAdapter(); int err; //Assert.IsNull(sa.Request(null,out err)); Sensor s1 = new Sensor { SensorID = 1, ModuleNo = 1 }; var dat1 = sa.ReadData(s1, filePath); Assert.IsEmpty(dat1); Sensor s2 = new Sensor { SensorID = 2, ModuleNo = 2 }; var dat2 = sa.ReadData(s2, filePath); Assert.IsEmpty(dat2); Sensor s3 = new Sensor { SensorID = 3, ModuleNo = 3 }; var dat3 = sa.ReadData(s3, filePath); var act3 = Encoding.ASCII.GetString(dat3.First()); var exp3 = "2,3,2014/8/14 6:54:43,30:49:59.31026N,121:31:23.58789E,3639542.8400,2680979.7673,28.0908,30:49:59.30982N,121:31:23.58559E,3639542.8124,2680979.7071,28.1878"; Assert.AreEqual(exp3, act3); }
public DacService(string svrConfig, string busPath) : base(MyName, svrConfig, busPath) { string cs = ConfigurationManager.AppSettings["SecureCloud"]; int dacServerPort = Convert.ToInt32(ConfigurationManager.AppSettings["Port"], 10); Log.InfoFormat("DBConnecting: {0}", cs); try { DbAccessorHelper.Init(new MsDbAccessor(cs));// 配置 } catch (Exception ex) { Log.ErrorFormat("系统初始化失败:{0}", ex.Message); return; } etDataStatus = new DataStatusConsumer(this); DACTaskManager.OnDacTaskFinished += etDataStatus.ProcessResult; DACTaskManager.OnDacTaskFinished += this.WriteDacTaskResultToJsonFile; this._warningHelper = new WarningHelper(); this._dacServer = new GprsDtuServer(dacServerPort); this._fileServer = new FileDtuServer(); this.Dtm = new DACTaskManager(this._dacServer, DbAccessorHelper.DbAccessor.QueryDtuNodes(), null); // DbAccessorHelper.DbAccessor.GetUnfinishedTasks() this.Dtm.SetFileServer(this._fileServer); // Push/Pull mode. this.Pull(null, this.OnMessageReceived); this.Response(this.ResponseHandler); this.Subscribe("cm", "/cm/datachanged/dtu/sensor/", this.OnSubscribed); ConsoleCtrlManager.Instance.RegCmd("reload", this.LoadHandler); // 注册重新加载传感器信息 ConsoleCtrlManager.Instance.Exit += this.Instance_Exit; this._warningHelper.UpdateAllDtuStatus(); }
public void TestGetDtuByNetworkType() { DbAccessorHelper.Init(new MsDbAccessor(connstr)); IList <DtuNode> dtus = DbAccessorHelper.DbAccessor.QueryDtuNodes(null, NetworkType.gprs); Assert.IsTrue(dtus.Count > 0); //Assert.IsTrue(dtus.Count == 0); }
public void TestGetDtuByCode() { DbAccessorHelper.Init(new MsDbAccessor(connstr)); DtuNode d0 = DbAccessorHelper.DbAccessor.QueryDtuNode("20120049"); Assert.AreEqual((ushort)1, d0.DtuId); Assert.AreEqual("20120049", d0.DtuCode); Assert.AreEqual("K765集中采集站箱内", d0.Name); }
public void TestGetDtuByCode() { var cs = connstr.Split(','); DbAccessorHelper.Init(new SQLiteDbAccessor(cs[0])); DtuNode d0 = DbAccessorHelper.DbAccessor.QueryDtuNode("COM14"); Assert.AreEqual((ushort)3, d0.DtuId); Assert.AreEqual("COM14", d0.DtuCode); Assert.AreEqual("", d0.Name); }
public void TestParseResult() { DbAccessorHelper.Init(new MsDbAccessor(connstr));// 配置 // X U 0 0 3 0 0 2 var bts = ValueHelper.StrToToHexByte("32 55 30 30 33 30 30 32"); var s = new Sensor() { ModuleNo = 2 }; s.AddParameter(new SensorParam(new FormulaParam()) { Value = 0.002 }); var res = new SensorAcqResult { Response = bts, Sensor = s }; var sa = new FTM50SSmallLaserSensorAdapter(); sa.ParseResult(ref res); var data = res.Data; Assert.IsNotNull(data); Assert.AreEqual(3.002, data.RawValues[0], 0.0000001); Assert.AreEqual(3000.000, data.PhyValues[0], 0.0000001); bts = ValueHelper.StrToToHexByte("32 55 30 46 33 59 30 32"); Trace.WriteLine(res.Data.JsonResultData); res.Response = bts; try { sa.ParseResult(ref res); } catch { } Assert.AreEqual((int)Errors.ERR_DATA_PARSEFAILED, res.ErrorCode); Trace.WriteLine(res.Data.JsonResultData); bts = ValueHelper.StrToToHexByte("32 56 30 46 33 59 30 32"); res.Response = bts; sa.ParseResult(ref res); Assert.AreEqual((int)Errors.ERR_INVALID_DATA, res.ErrorCode); Trace.WriteLine(res.Data.JsonResultData); }
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 EtService(string svrConfig, string busPath) : base(MyName, svrConfig, busPath) { string cs = ConfigurationManager.AppSettings["SecureCloud"]; int dacServerPort = Convert.ToInt32(ConfigurationManager.AppSettings["Port"], 10); Log.InfoFormat("DBConnecting: {0}", cs); try { DbAccessorHelper.Init(new MsDbAccessor(cs)); // 配置 DACTaskResultConsumerService.Init(); // 消费 } catch (Exception ex) { Log.ErrorFormat("系统初始化失败:{0}", ex.Message); return; } etDataStatus = new EtDataStatusConsumer(this); // 自定义消费者 if (DACTaskResultConsumerService.Queues.Count == 0) { var queue = new DACTaskResultConsumerQueue(ConsumeType.Async); queue.Enqueue(etDataStatus); DACTaskResultConsumerService.AddComsumerQueue(queue); } else { DACTaskResultConsumerService.InsertComsumer(0, 2, etDataStatus); //DACTaskResultConsumerService.Queues[0].Insert(etDataStatus, 1); } _warningHelper = new WarningHelper(); _dacServer = new GprsDtuServer(dacServerPort); _fileServer = new FileDtuServer(); Dtm = new DACTaskManager(_dacServer, DbAccessorHelper.DbAccessor.QueryDtuNodes(), null); // DbAccessorHelper.DbAccessor.GetUnfinishedTasks() Dtm.SetFileServer(_fileServer); // Push/Pull mode. Pull(null, OnMessageReceived); Response(ResponseHandler); Subscribe("cm", "/cm/datachanged/dtu/sensor/", OnSubscribed); ConsoleCtrlManager.Instance.RegCmd("reload", LoadHandler); // 注册重新加载传感器信息 ConsoleCtrlManager.Instance.Exit += Instance_Exit; _warningHelper.UpdateAllDtuStatus(); }
public void TestParseTempHumidityResponse() { DbAccessorHelper.Init(new MsDbAccessor(connstr)); // 配置 TempHumiditySensorAdapter ci = new TempHumiditySensorAdapter(); string bs = "FD0100230000"; //0-5 bs += "01"; // 命令号 6=01 bs += "000055"; // Hum: 7-9: 01 H L = 85 bs += "41CC0000"; // Temp 10-13,float, = 25.5 bs += "000000000000000000000000000000005EDF"; byte[] buff = ValueHelper.ToBytes(bs); byte crc = ValueHelper.CheckCRC8(buff, 1, 29); buff[30] = crc; SensorAcqResult r = new SensorAcqResult { Response = buff, Sensor = new Sensor() { ModuleNo = 35, ChannelNo = 1, TableColums = "Humidity,Temperature" } }; ci.ParseResult(ref r); var data = r.Data; Assert.IsNotNull(data); Assert.AreEqual(25.50, data.RawValues[0]); Assert.AreEqual(0.85, data.RawValues[1]); bs = "Fc0100230000"; //0-5 bs += "01"; // 命令号 6=01 bs += "000055"; // Hum: 7-9: 01 H L = 85 bs += "41CC0000"; // Temp 10-13,float, = 25.5 bs += "000000000000000000000000000000005EDF"; buff = ValueHelper.ToBytes(bs); crc = ValueHelper.CheckCRC8(buff, 1, 29); buff[30] = crc; r.Response = buff; ci.ParseResult(ref r); Assert.AreEqual((int)Errors.ERR_INVALID_DATA, r.ErrorCode); }
public void TestParseInclinometrResponse() { DbAccessorHelper.Init(new MsDbAccessor(connstr));// 配置 ISensorAdapter ci = new GLSB40I70Laser_SensorAdapter(); string bs = "6406823030302e333131c1"; byte[] buff = ValueHelper.ToBytes(bs); SensorAcqResult r = new SensorAcqResult() { Response = buff, Sensor = new Sensor { ModuleNo = 100, TableColums = "Angle_X,Angle_Y" } }; r.Sensor.AddParameter(new SensorParam(new FormulaParam()) { Value = 0.1 }); ci.ParseResult(ref r); var data = r.Data; Assert.IsNotNull(data); Assert.AreEqual(0.311, data.RawValues[0]); Assert.AreEqual(0.211, data.PhyValues[0]); bs = "6406833030302e333131c1"; buff = ValueHelper.ToBytes(bs); r.Response = buff; ci.ParseResult(ref r); Assert.IsNotNull(data); Assert.AreEqual((int)Errors.ERR_INVALID_DATA, r.ErrorCode); bs = "6406823030302e33"; buff = ValueHelper.ToBytes(bs); r.Response = buff; ci.ParseResult(ref r); Assert.IsNotNull(data); Assert.AreEqual((int)Errors.ERR_INVALID_DATA, r.ErrorCode); }
public void TestSaveTask() { DbAccessorHelper.Init(new MsDbAccessor(connstr)); DACTask task = new DACTask(); task.Status = DACTaskStatus.RUNNING; task.DtuID = 1; task.Sensors = new List <uint>(0); task.Sensors.Add(1); task.Sensors.Add(2); task.Sensors.Add(3); task.Saved = false; task.Requester = "LIU"; task.Requested = System.DateTime.Now; Assert.IsTrue(DbAccessorHelper.DbAccessor.SaveInstantTask(task) > 0); IList <DACTask> unfinished = DbAccessorHelper.DbAccessor.GetUnfinishedTasks(); Assert.IsTrue(unfinished.Count > 0); }
public void TestTaskResult() { DACTaskResult r = new DACTaskResult(); DACTask task = new DACTask(); task.Status = DACTaskStatus.RUNNING; task.ID = 3; task.DtuID = 1; r.Task = task; task.Status = DACTaskStatus.RUNNING; r.ErrorCode = 123; r.ErrorMsg = "Hello error"; r.Elapsed = 321; r.Finished = System.DateTime.Now; DbAccessorHelper.Init(new MsDbAccessor(connstr)); Assert.IsTrue(DbAccessorHelper.DbAccessor.UpdateInstantTask(r) > 0); IList <DACTask> unfinished = DbAccessorHelper.DbAccessor.GetUnfinishedTasks(); //status=1/2 DACTask ti = unfinished[0]; Assert.AreEqual(ti.ID, 3); Assert.AreEqual(ti.Status, DACTaskStatus.RUNNING); }
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); }
public void TestMsSqlInstantTask() { // Client Simulator client = new DtuClient("127.0.0.1", 5055); client.OnReceived += OnMsg; GprsDtuServer _server = new GprsDtuServer(5055); _server.Start(); client.Connect(20120049, "18651895100", "192.168.1.42"); DbAccessorHelper.Init(new MsDbAccessor(this.mssqlConnStr)); // Thread.Sleep(8000); string tid = new Guid().ToString(); List <uint> sensors = new List <uint> { (uint)17 }; DACTask ut = new DACTask(tid, 1, sensors, TaskType.INSTANT, this.OnTaskFinished); // tm = new DACTaskManager(_server, DbAccessorHelper.DbAccessor.QueryDtuNodes(), DbAccessorHelper.DbAccessor.GetUnfinishedTasks()); // tm.DealDailyWork(); // Thread.Sleep(8000); int r = tm.ArrangeInstantTask(tid, 1, sensors, this.OnTaskFinished, false); System.Console.WriteLine("result = {0}", r); }
public void TestRemoteDtuRead() { this.Log.Debug("TestRemoteDtuRead"); IList <DtuNode> _nodes = new List <DtuNode>(); DtuNode dn1 = new DtuNode { DtuCode = "20140168", DacTimeout = 2, // 10s timeout DacInterval = 10, //30s interval DtuId = 999, NetworkType = NetworkType.gprs, Type = DtuType.Gprs }; DtuNode dn2 = new DtuNode { DtuCode = "20140167", DacTimeout = 6, // 10s timeout DacInterval = 20, //30s interval DtuId = 998, NetworkType = NetworkType.gprs, Type = DtuType.Gprs }; Sensor s02 = new Sensor { ProtocolType = (uint)ProtocolType.Pressure_MPM, DtuID = 999, SensorID = 1, ModuleNo = 2, ChannelNo = 0, FactorType = (uint)SafetyFactor.StressStrainPoreWaterPressure, Name = "Pressure 02" }; Sensor s27 = new Sensor { ProtocolType = (uint)ProtocolType.Pressure_MPM, DtuID = 999, SensorID = 2, ModuleNo = 27, ChannelNo = 0, FactorType = (uint)SafetyFactor.StressStrainPoreWaterPressure, Name = "Pressure 27" }; Sensor s5135 = new Sensor { ProtocolType = (uint)ProtocolType.VibratingWire_OLD, // DtuID = 998, SensorID = 3, ModuleNo = 5135, ChannelNo = 1, FactorType = (uint)SafetyFactor.Forcesteelbar, Name = "Pressure 5135" }; _nodes.Add(dn1); //_nodes.Add(dn2); dn1.AddSensor(s02); dn1.AddSensor(s27); dn1.AddSensor(s5135); GprsDtuServer _server = new GprsDtuServer(5056); this.Log.Debug("Server started."); string sqlconn = "server=localhost;database=iSecureCloud;uid=tester;pwd=Fas123"; // sqlconn = "server=192.168.1.128;database=DW_iSecureCloud_Empty2.2;uid=sa;pwd=861004"; this.Log.DebugFormat("Connect to db: {0}", sqlconn); DbAccessorHelper.Init(new MsDbAccessor(sqlconn)); _server.Start(); tm = new DACTaskManager(_server, _nodes, null, DtuType.Gprs); tm.ArrangeTimedTask(); Console.ReadLine(); }
public void TestParseInclinometrResponse() { DbAccessorHelper.Init(new MsDbAccessor(connstr));// 配置 ISensorAdapter ci = new Inclination_ROD_SensorAdapter(); string bs = "001626c68184def28aa5120d61ffdacfbeffc22929f831"; byte[] buff = ValueHelper.ToBytes(bs); var r = new SensorAcqResult() { ErrorCode = (int)Errors.SUCCESS, Response = buff, Sensor = new Sensor() { ModuleNo = 9926, TableColums = "Angle_X,Angle_Y" } }; ci.ParseResult(ref r); var data = r.Data; Assert.IsNotNull(r.Data); Assert.AreEqual(-2.437186f, data.RawValues[0]); Assert.AreEqual(-4.052695f, data.RawValues[1]); ci = new Inclination_BOX_SensorAdapter(); bs = "001626c68184def28aa5120d61ffdacfbeffc22929f831"; buff = ValueHelper.ToBytes(bs); r.Response = buff; try { ci.ParseResult(ref r); } catch { throw; } Assert.IsNotNull(data); r.Response = null; ci.ParseResult(ref r); Assert.IsNotNull(data); bs = "001626c68184def28aa5120d61ffdacfbeffc22929"; buff = ValueHelper.ToBytes(bs); r.Response = buff; ci.ParseResult(ref r); Assert.IsNotNull(data); bs = "001526c68184def28aa5120d61ffdacfbeffc229290752"; buff = ValueHelper.StrToToHexByte("00 15 22 28 81 8F EA 0D 71 0E 40 0F CB FF F5 08 77 FF F9 6B 7B 78 9E"); r = new SensorAcqResult() { ErrorCode = (int)Errors.SUCCESS, Response = buff, Sensor = new Sensor() { ModuleNo = 8744, TableColums = "Angle_X,Angle_Y" } }; ci.ParseResult(ref r); data = r.Data; Assert.IsNotNull(data); Assert.AreEqual(-0.718729f, data.RawValues[0], 0.000001); Assert.AreEqual(-0.431237f, data.RawValues[1], 0.000001); }
public void SetUp() { DbAccessorHelper.Init(new MsDbAccessor(cs)); }