Пример #1
0
        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);
        }
Пример #2
0
        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);
        }