Example #1
0
        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);
        }
Example #2
0
        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);
        }