public void TestGetAdapter() { IAdapterManager adapterManager = SensorAdapterManager.InitializeManager(); Assert.IsNotNull(adapterManager); Assert.IsNull(SensorAdapterManager.InitializeManager("abcdedfg")); Assert.IsNotNull(adapterManager.GetSensorAdapter(ProtocolType.Voltage)); Assert.IsNull(adapterManager.GetSensorAdapter(ProtocolType.TempHumidity_OLD)); Assert.IsNull(adapterManager.GetSensorAdapter((uint)1234567)); string str = "24 32 33 52 50 31 33 32 0d"; Sensor s = new Sensor() { ModuleNo = 23, ChannelNo = 1, ProtocolType = (uint)ProtocolType.Pressure_MPM }; int err; var r = this.GetSensorAcqResult(); r.Sensor = s; adapterManager.GetSensorAdapter(s.ProtocolType).Request(ref r); byte[] req = r.Request; Assert.AreEqual(str, ValueHelper.BytesToHexStr(req)); }
/// <summary> /// </summary> /// <param name="dtus">所有DTU信息</param> /// <param name="utasks">未完成的实时采集任务(存储于数据库中,以DTUID为key)</param> public DACTaskManager(IDtuServer dtuServer, IList <DtuNode> dtus, IList <DACTask> utasks, DtuType type = DtuType.Gprs) { OnDTUConnectionStatusChanged = null; this._dtuServer = dtuServer; DACTaskPersistent.Init(); foreach (DtuNode d in dtus) { _dtus[d.DtuId] = d; _dtuCodeMap[d.DtuCode] = d; } Log.DebugFormat("{0} dtus ready to work.", _dtus.Count); DtuType = type; if (DtuType.Gprs == type) { dtuServer.OnConnectStatusChanged += OnConnectionStatusChanged; } _adapterManager = SensorAdapterManager.InitializeManager(); if (utasks != null) { foreach (DACTask t in utasks) { if (t.DtuID == 0) { continue; } _rtasks[t.DtuID] = t; ArrangeInstantTask(t.TID, t.DtuID, t.Sensors, null, true); } } }
public void TestSnGpsTask() { if (System.IO.File.Exists("lastAcqDate.dat")) { System.IO.File.Delete("lastAcqDate.dat"); } (new Gps_SN_SensorAdapter() as GpsBaseAdapter).UpdateSensorLastDataAcqTime(1, new DateTime(2015, 1, 28, 23, 51, 35)); var adapterManager = SensorAdapterManager.InitializeManager(); var taskexcutor = new DACTaskExecutor(adapterManager); var dtusens = new List <uint>(); dtusens.Add(1); var task = new DACTask("1", 100, dtusens, TaskType.TIMED, null); var dtunode = new DtuNode { DtuId = 100, Type = DtuType.File, NetworkType = NetworkType.hclocal }; var s = new Sensor { SensorID = 1, ModuleNo = 9003, ProtocolType = 9403, ChannelNo = 1, TableColums = "SURFACE_DISPLACEMENT_X_VALUE,SURFACE_DISPLACEMENT_Y_VALUE,SURFACE_DISPLACEMENT_Z_VALUE" }; s.AddParameter(new SensorParam(null) { Value = 2 }); s.AddParameter(new SensorParam(null) { Value = 2 }); s.AddParameter(new SensorParam(null) { Value = 2 }); s.AddParameter(new SensorParam(null) { Value = 0 }); dtunode.AddSensor(s); dtunode.AddProperty("param1", filepath); var conn = new FileDtuConnection(dtunode); var contxt = new DacTaskContext() { Node = dtunode, DtuConnection = conn }; var dactaskresult = taskexcutor.Run(task, contxt); Assert.IsNotNull(dactaskresult); Assert.IsTrue(dactaskresult.Task.Status == DACTaskStatus.DONE); var sensorresults = dactaskresult.SensorResults; Assert.NotNull(sensorresults); Assert.IsNotEmpty(sensorresults); Assert.AreEqual(101, sensorresults.Count); var senres = sensorresults[0]; Assert.IsTrue(senres.IsOK); var sendata = senres.Data; Assert.IsTrue(sendata is Gps3dData); Assert.AreEqual(sendata.RawValues[0], 4435175.4523 * 1000, 0.0000001); Assert.AreEqual(sendata.RawValues[1], 524121.0006 * 1000, 0.0000001); Assert.AreEqual(sendata.RawValues[2], 82.2112 * 1000, 0.0000001); Assert.AreEqual(sendata.ThemeValues[0].Value, 4435175.4523 * 1000 - 2, 0.0000001); Assert.AreEqual(sendata.ThemeValues[1].Value, 524121.0006 * 1000 - 2, 0.0000001); Assert.AreEqual(sendata.ThemeValues[2].Value, 82.2112 * 1000 - 2, 0.0000001); }