Esempio n. 1
0
        /// <summary>
        /// 检查任务状态
        /// </summary>
        /// <param name="status"></param>
        private void CheckStatus(NDCItem item, Message_b b)
        {
            switch (item.Status)
            {
            case 37:     //小车已经分配
                item.CARRIERID = b.ParNo;
                break;

            case 3:    //任务完成
                //
                if (item.PLCStatus != NDCPlcStatus.Unloaded && item._mTask.PAUSE)
                {
                    item.IsFinish = false;
                }
                else
                {
                    item.IsFinish   = true;
                    item.finishTime = DateTime.Now;
                }
                break;

            case 27:    //IKEY in use
                item._mTask.IKEY = Ikey++;
                DoStartOrder(item);
                break;

            case 25:    //Cancel acknowledge
                item.CancleFromSystem = true;
                break;
            }
            if (item._mTask.TASKID != 0)
            {
                _sqlControl.UpdateNdcItem(item);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 更新B消息
        /// </summary>
        /// <param name="message"></param>
        internal override void UpdateItem(Message_b message)
        {
            try
            {
                NDCItem ndcItem = Items.Find(c => { return c._mTask.NDCINDEX == message.Index; });
                if (ndcItem == null)
                {
                    ndcItem = TempItems.Find(c => { return c._mTask.NDCINDEX == message.Index; });
                    if (ndcItem != null)
                    {
                        ndcItem._mTask.IKEY = message.IKEY;
                    }else
                    {
                        ndcItem = new NDCItem();
                        ndcItem._mTask.IKEY = message.IKEY;
                        ndcItem._mTask.NDCINDEX = message.Index;
                        TempItems.Add(ndcItem);
                    }
                }
                ndcItem.SetBMessage(message);
                if (ndcItem.TaskInfo != "")
                {
                    //Console.WriteLine(ndcItem.TaskInfo);
                    log.LOG(ndcItem.TaskInfo);
                }
                CheckStatus(ndcItem, message);

                _NoticeUpdate(ndcItem);
            }
            catch (Exception e)
            {
                //Console.WriteLine(e.Message);
                log.LOG(e.Message);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 更新B消息
        /// </summary>
        /// <param name="message"></param>
        public override void UpdateItem(Message_b message)
        {
            try
            {
                NDCItem ndcItem = Items.Find(c => { return(c._mTask.ORDERINDEX == message.Index); });
                if (ndcItem == null)
                {
                    ndcItem                   = new NDCItem();
                    ndcItem._mTask.IKEY       = message.IKEY;
                    ndcItem._mTask.ORDERINDEX = message.Index;
                    Items.Add(ndcItem);
                }
                ndcItem.SetBMessage(message);
                if (ndcItem.TaskInfo != "")
                {
                    log.LOG(ndcItem.TaskInfo);
                }
                CheckStatus(ndcItem, message);

                CheckCanUpdateTaskList(ndcItem);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                log.LOG(e.Message);
            }
        }
Esempio n. 4
0
 /// <summary>
 /// 更新B消息
 /// </summary>
 /// <param name="message"></param>
 public void SetBMessage(Message_b message)
 {
     b.OrderIndex         = message.Index;
     b.TransportStructure = message.TransportStructure;
     Status      = message.Status;
     b.Status    = message.Status;
     b.Parnumber = message.ParNo;
     b.IKEY      = message.IKEY;
     TaskInfo    = b.ToString();
 }
Esempio n. 5
0
        public void Message_b_IkeyTest()
        {
            //Arange
            byte[] data = { 00, 99, 01, 01, 255, 00, 0x01, 0x99 };
            ushort type = 'b';

            //Act
            IACIMessage message = MessageParser.Parse(type, data);
            Message_b   msg     = (Message_b)message;

            //Assert
            Assert.AreEqual(msg.Index, 99);
            Assert.AreEqual(msg.TransportStructure, 1);
            Assert.AreEqual(msg.Status, 1);
            Assert.AreEqual(msg.ParNo, 255);
            Assert.AreEqual(msg.IKEY, 409);
        }
Esempio n. 6
0
        /// <summary>
        /// 检查任务状态
        /// </summary>
        /// <param name="status"></param>
        private void CheckStatus(NDCItem item, Message_b b)
        {
            switch (item.Status)
            {
            case 37:     //小车已经分配
                item.CarrierId = b.ParNo;
                break;

            case 3:    //任务完成
                item.IsFinish   = true;
                item.finishTime = DateTime.Now;
                break;

            case 27:    //IKEY in use
                TempItem temp = TempList.Find(c => { return(c.IKey.Equals("" + item._mTask.IKEY)); });
                if (temp != null)
                {
                    temp.IKey = Ikey++;
                    DoStartOrder(temp);
                }
                break;
            }
        }
Esempio n. 7
0
 internal abstract void UpdateItem(Message_b m);
Esempio n. 8
0
        /// <summary>
        /// Event when Recive Data From System Manager
        /// </summary>
        /// <param name="msg"></param>
        private void Instance_ReciveData(IACIMessage msg)
        {
            if (!systemHalted)
            {
                if (msg.Type == "s")
                {
                    Message_s s_response = (Message_s)msg;
                    int       index      = s_response.Index; //任务序列 (SM返回)
                    int       phase      = s_response.Magic; //任务的阶段标识(相当于顺序)

                    #region Send the phase back to SM
                    if (s_response.Magic == 1)
                    {
                        SendNewM(index, phase);
                    }
                    else if (s_response.Magic == 2)
                    {
                        SendNewM(index, phase);
                    }
                    else if (s_response.Magic == 4)//到达接货
                    {
                        SendNewM(index, phase);
                    }
                    else if (s_response.Magic == 6)//接货完成,由重新定位返回数据
                    {
                        SendNewM(index, phase);
                    }
                    else if (s_response.Magic == 8)//到达卸货
                    {
                        SendNewM(index, phase);
                    }
                    else if (s_response.Magic == 10)
                    {
                        SendNewM(index, phase);
                    }
                    else if (s_response.Magic == 11)
                    {
                        SendNewM(index, phase);
                    }
                    else if (s_response.Magic == 48)
                    {
                        int sendNextPhase = 143;
                        SendNewM(index, sendNextPhase);
                    }
                    else if (s_response.Magic == 49)
                    {
                        int sendNextPhase = 143;
                        SendNewM(index, sendNextPhase);
                    }
                    else if (s_response.Magic == 50)
                    {
                        int sendNextPhase = 143;
                        SendNewM(index, sendNextPhase);
                    }
                    else if (s_response.Magic == 143)
                    {
                        SendNewM(index, phase);
                    }
                    else if (s_response.Magic == 254)
                    {
                        SendNewM(index, phase);
                    }
                    else if (s_response.Magic == 255)
                    {
                        SendNewM(index, phase);
                    }

                    #endregion

                    UpdateItem(s_response);
                }
                else if (msg.Type == "b")
                {
                    Message_b b_response = (Message_b)msg;

                    UpdateItem(b_response);
                }
                else if (msg.Type == "<")//改写PLC的结果返回
                {
                    Message_vpil v_response = (Message_vpil)msg;
                    //MessageBox.Show(string.Format("成功改写Data{0},改写的值为{1}", v_response.PlcLp1 + 1, v_response.Value1));
                    UpdateItem(v_response);
                }
            }
        }
Esempio n. 9
0
 public abstract void UpdateItem(Message_b m);