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. } }
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); }
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); }