/// <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); } }
/// <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); } }
/// <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); } }
/// <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(); }
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); }
/// <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; } }
internal abstract void UpdateItem(Message_b m);
/// <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); } } }
public abstract void UpdateItem(Message_b m);