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));
        }
Ejemplo n.º 2
0
        /// <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);
                }
            }
        }
Ejemplo n.º 3
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);
        }