public override ProcessResult Process(string ip, InstructionTask instructionTask)
        {
            ProcessResult result = new ProcessResult();
            result.Done = false;
            result.Message = string.Empty;

            bool right = true;
            List<DataCache> dataCaches = new List<DataCache>();
            List<Detector> detectors = new List<Detector>();
            if ((instructionTask != null) && (instructionTask.Instructions != null) && (instructionTask.Instructions.Count > 0))
            {
                for (int i = 0; i < instructionTask.Instructions.Count; i++)
                {
                    AlarmInstruction instruction = instructionTask.Instructions[i] as AlarmInstruction;
                    if (instruction == null)
                    {
                        right = false;
                        break;
                    }
                    else
                    {
                        if (instruction.Detectors != null)
                        {
                            for (int j = 0; j < instruction.Detectors.Count; j++)
                            {
                                detectors.Add(instruction.Detectors[j]);
                            }
                        }
                    }
                }
            }
            if (right)
            {
                MachineBusiness machineBusiness = new MachineBusiness();
                Machine machine = machineBusiness.QueryByIp(ip);
                if (machine != null)
                {
                    DetectorBusiness detectorBusiness = new DetectorBusiness();
                    List<Detector> currentDetectors = detectorBusiness.QueryByMachine(machine.Guid);
                    if ((currentDetectors != null) && (currentDetectors.Count == detectors.Count))
                    {
                        for (int i = 0; i < detectors.Count; i++)
                        {
                            string userId = this.GetType().Name;
                            DateTime now = DateTime.Now;

                            DataCache dataCache = new DataCache();

                            dataCache.InsertUserId = ip;
                            dataCache.InsertTime = now;
                            dataCache.UpdateUserId = userId;
                            dataCache.UpdateTime = now;
                            dataCache.Remark = string.Empty;
                            dataCache.Validity = true;
                            dataCache.DetectorId = currentDetectors[i].Guid;

                            byte[] values = BitConverter.GetBytes(detectors[i].Value);
                            Array.Reverse(values);
                            currentDetectors[i].Decode(values);
                            dataCache.Value = currentDetectors[i].Value;

                            dataCache.RefreshTime = now;
                            dataCache.Newest = true;

                            dataCaches.Add(dataCache);
                        }
                    }
                }

                DataCacheBusiness dataCacheBusiness = new DataCacheBusiness();
                result.Done = dataCacheBusiness.Insert(dataCaches);
            }

            return result;
        }
        public override ProcessResult Process(string ip, InstructionTask instructionTask)
        {
            ProcessResult result = new ProcessResult();
            result.Done = false;
            result.Message = string.Empty;

            if ((instructionTask != null) && (instructionTask.Instructions != null) && (instructionTask.Instructions.Count > 0))
            {
                for (int i = 0; i < instructionTask.Instructions.Count; i++)
                {
                    MessageInstruction instruction = instructionTask.Instructions[i] as MessageInstruction;
                    if (instruction != null)
                    {
                        string userId = this.GetType().Name;
                        DateTime now = DateTime.Now;

                        MessageCache messageCache = new MessageCache();

                        messageCache.InsertUserId = ip;
                        messageCache.InsertTime = now;
                        messageCache.UpdateUserId = userId;
                        messageCache.UpdateTime = now;
                        messageCache.Remark = string.Empty;
                        messageCache.Validity = true;

                        messageCache.Ip = ip;
                        messageCache.Code = instruction.Code;
                        messageCache.Result = instruction.Result;
                        messageCache.SendTime = instruction.SendTime;

                        MachineBusiness machineBusiness = new MachineBusiness();
                        Machine machine = machineBusiness.QueryByIp(ip);
                        if (machine != null)
                        {
                            messageCache.MachineId = machine.Guid;
                        }

                        messageCache.RefreshTime = now;

                        MessageCacheBusiness messageCacheBusiness = new MessageCacheBusiness();
                        result.Done = messageCacheBusiness.Insert(messageCache);
                    }
                }
            }

            return result;
        }