public int SaveInstantTask(ATTask task) { Log.DebugFormat("Saving task result for {0}", task.DtuID); string sql; if (task.Saved) { sql = string.Format("update T_TASK_INSTANT set status={0}, finished='{1}' where ID={2}", (int)task.Status, String.Format("{0:yyyy-M-d HH:mm:ss}", task.Finished), task.ID); } else { sql = string.Format(@"insert into T_TASK_INSTANT (DTU_ID,TASK_NAME,REQUESTER,REQUESTED,STATUS,MSG_ID) values ({0},'{1}','{2}','{3}',{4},'{5}')", task.DtuID, "Instant", "admin", String.Format("{0:yyyy-M-d HH:mm:ss}", task.Requested), (int)task.Status, task.TID ); } Console.WriteLine(sql); int effectedRowsOrId = this._helper.ExecuteSql(sql); if (!task.Saved) { task.ID = effectedRowsOrId; } task.Saved = true; return(effectedRowsOrId); }
public void GetAtCommandTest() { //string tid, uint dtuId, JObject[] cmdobjs, TaskType type, ATTaskResultConsumer tc ATTask task = new ATTask(string.Empty, 0, null, TaskType.INSTANT, null); ConfigCommand commadns = task.GetAtCommands(this.cmds); List <ATCommand> lst = new List <ATCommand>(); lst = commadns.AtCommands; Assert.AreEqual("***COMMIT CONFIG***", lst[0].ToATString()); Assert.AreEqual("AT+SVRCNT=2\r", lst[1].ToATString()); Assert.AreEqual("AT+IPAD=223.4.212.14\r", lst[2].ToATString()); Assert.AreEqual("AT+PORT=4050\r", lst[3].ToATString()); Assert.AreEqual("AT+IPAD2=218.3.150.107\r", lst[4].ToATString()); Assert.AreEqual("AT+PORT2=5001\r", lst[5].ToATString()); Assert.AreEqual("AT+MODE=TRNS\r", lst[6].ToATString()); Assert.AreEqual("AT+BYTEINT=100\r", lst[7].ToATString()); Assert.AreEqual("AT+RETRY=3\r", lst[8].ToATString()); }
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); }