コード例 #1
0
        public void TestConfigCommandExecutor()
        {
            ConfigCommand cfgCmd = new ConfigCommand();

            cfgCmd.AddRange(new List <ATCommand> {
                new SetIP("{'ip':'192.168.1.145'}"), new SetPort("{'port':5050}"), new SetReset()
            });
            string        dtu     = "12345678";
            GprsDtuServer _server = new GprsDtuServer(5055);

            _server.Start();
            DacTaskContext context = new DacTaskContext()
            {
                DtuConnection = new GprsDtuConnection(_server),
                Node          = new DtuNode()
                {
                    DtuCode = dtu
                }
            };

            Thread.Sleep(8000);

            //conn = (GprsDtuConnection) _server.GetConnection(new DtuNode{DtuCode = dtu});

            if (context.DtuConnection != null && context.DtuConnection.IsAvaliable())
            {
                var cce = new ConfigCommandExecutor();
                //cce.Execute(conn, cfgCmd, 12000);
                ExecuteResult result = cce.Execute(null, context, 12000);
                // Assert.IsTrue(result.IsOK);
            }
            else
            {
                //Assert.
            }
        }
コード例 #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);
        }
コード例 #3
0
        public ExecuteResult Execute(ATTask task, DacTaskContext context, ushort timeout = 2)
        {
            CommandExecutor ce = new CommandExecutor();
            ExecuteResult   r  = new ExecuteResult();

            r.Task        = task;
            r.Task.Status = DACTaskStatus.RUNNING;
            context.DtuConnection.Connect();
            // 循环发送数据
            long totalElapsed = 0;
            int  index        = 0;

            for (; index < r.Task.AtCommands.AtCommands.Count; index++)
            {
                var             ac  = r.Task.AtCommands.AtCommands[index];
                ATCommandResult atr = ce.Execute((GprsDtuConnection)context.DtuConnection, ac, timeout);
                if (ac.ToATString() == "***COMMIT CONFIG***")
                {
                    int i = 0;
                    while (!atr.IsOK)
                    {
                        if (i >= 10 || (r.Task.AtCommands.AtCommands.Count == 2))
                        {
                            break;
                        }
                        atr           = ce.Execute((GprsDtuConnection)context.DtuConnection, ac, timeout);
                        totalElapsed += atr.Elapsed;
                        i++;
                    }
                }

                if (!atr.IsOK)
                {
                    if (r.Task.AtCommands.AtCommands.Count == 2 && index == 0)
                    {
                        continue;
                    }
                    break;
                }
                r.AddAtResult(atr);
                totalElapsed += atr.Elapsed;
                r.ToJsonString();
            }
            if (index < r.Task.AtCommands.AtCommands.Count - 1)
            {
                for (; index < r.Task.AtCommands.AtCommands.Count; index++)
                {
                    var ar = new ATCommandResult()
                    {
                        ResultBuffer = null,
                        IsOK         = false,
                    };
                    ar.GetJsonResult(r.Task.AtCommands.AtCommands[index].ToATString());
                    r.AddAtResult(ar);
                }
            }
            r.Elapsed     = totalElapsed;
            r.Finished    = DateTime.Now;
            r.Task.Status = DACTaskStatus.DONE;
            context.DtuConnection.Disconnect();
            return(r);
        }