private IEnumerable <SensorAcqResult> RequestFileSensor(Sensor si, FileDtuConnection conn) { log.InfoFormat( "======> sensor:{0}-{1} p={2},m={3},channel={4},filepath={5}", conn.DtuID, si.SensorID, si.ProtocolType, si.ModuleNo, si.ChannelNo, conn.FilePath); var _adapter = this._adapterManager.GetSensorAdapter(si.ProtocolType) as IFileSensorAdapter;// 强转成FileSensorAdapter var rslt = new List <SensorAcqResult>(); if (_adapter != null) { var data = _adapter.ReadData(si, conn.FilePath);// 从文件识别数据行 foreach (byte[] d in data) { var r = new SensorAcqResult { Request = null, Sensor = si, RequestTime = System.DateTime.Now, Response = d }; _adapter.ParseResult(ref r);// 解析数据行 r.ErrorCode = (int)Errors.SUCCESS; r.ErrorMsg = "OK!"; rslt.Add(r); log.InfoFormat( "<====== result='{0}-{1}', data = {2}", r.ErrorCode, r.ErrorMsg, r.Data == null ? "null" : r.Data.JsonResultData); } } else { var r = new SensorAcqResult { Request = null, Sensor = si, RequestTime = System.DateTime.Now, Response = null, ErrorCode = (int)Errors.ERR_UNKNOW_PROTOCOL, ErrorMsg = "传感器无编码器", Data = null }; rslt.Add(r); log.InfoFormat( "<====== result='{0}-{1}', data = {2}", r.ErrorCode, r.ErrorMsg, r.Data == null ? "null" : r.Data.JsonResultData); } return(rslt); }
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); }