public void Init() { IOGroup.Children.Clear(); #region Init BUS CTOP.Base.BackBusLeft busLeft = new CTOP.Base.BackBusLeft(); IOGroup.Children.Add(busLeft); #endregion #region Init CPU cpu = new CPU(); IOGroup.Children.Add(cpu); #endregion #region InitUI foreach (var node in Tool.UIlist) { if (node.m_typeCode == 2) { DO15 temp = new DO15(node); IOGroup.Children.Add(temp); CTOP.Base.BackBusMiddle busMid = new CTOP.Base.BackBusMiddle(); IOGroup.Children.Add(busMid); } else if (node.m_typeCode == 22) { DO8R temp = new DO8R(node); IOGroup.Children.Add(temp); CTOP.Base.BackBusMiddle busMid = new CTOP.Base.BackBusMiddle(); IOGroup.Children.Add(busMid); } else if (node.m_typeCode == 1) { DI16 temp = new DI16(node); IOGroup.Children.Add(temp); CTOP.Base.BackBusMiddle busMid = new CTOP.Base.BackBusMiddle(); IOGroup.Children.Add(busMid); } else if (node.m_typeCode == 3) { AI8 temp = new AI8(node); IOGroup.Children.Add(temp); CTOP.Base.BackBusMiddle busMid = new CTOP.Base.BackBusMiddle(); IOGroup.Children.Add(busMid); } else if (node.m_typeCode == 6) { AO_4 temp = new AO_4(node); IOGroup.Children.Add(temp); CTOP.Base.BackBusMiddle busMid = new CTOP.Base.BackBusMiddle(); IOGroup.Children.Add(busMid); } else if (node.m_typeCode == 19) { AI8C temp = new AI8C(node); IOGroup.Children.Add(temp); CTOP.Base.BackBusMiddle busMid = new CTOP.Base.BackBusMiddle(); IOGroup.Children.Add(busMid); } } if (Tool.UIlist.Count != 0)//有IO模块的需要添加结束导轨且删除原有的导轨 { IOGroup.Children.RemoveAt(IOGroup.Children.Count - 1); CTOP.Base.BackBusRight busRight = new CTOP.Base.BackBusRight(); IOGroup.Children.Add(busRight); } else//无IO模块的直接添加结束导轨 { CTOP.Base.BackBusRight busRight = new CTOP.Base.BackBusRight(); IOGroup.Children.Add(busRight); } #endregion }
public void Update() { #region UpdateUI_IO /*查找界面上有多少IO,将数据list拆开分解后传入各IO模型界面类内部 */ foreach (var IO in IOGroup.Children)//界面全部刷新,全部遍历 { if (IO is DO15) { DO15 tIo = (DO15)IO; foreach (var item in Tool.UIlist) { if (item.m_nodeID == tIo.IOData.m_nodeID)//找到后就退出内层遍历 { //数据锁 if (tIo.IsUpdate)//从数据更新到UI { tIo.UpdateInputData(item); } else { tIo.UpdateAll();//从UI更新到数据 } break; } } } else if (IO is DO8R) { DO8R tIo = (DO8R)IO; foreach (var item in Tool.UIlist) { if (item.m_nodeID == tIo.IOData.m_nodeID)//找到后就退出内层遍历 { //数据锁 if (tIo.IsUpdate)//从数据更新到UI { tIo.UpdateInputData(item); } else//从UI更新到数据 { tIo.UpdateAll(); } break; } } } else if (IO is DI16) { DI16 tIo = (DI16)IO; foreach (var item in Tool.UIlist) { if (item.m_nodeID == tIo.IOData.m_nodeID)//找到后就退出内层遍历 { tIo.UpdateInputData(item); break; } } } else if (IO is AO_4) { AO_4 tIo = (AO_4)IO; foreach (var item in Tool.UIlist) { if (item.m_nodeID == tIo.IOData.m_nodeID)//找到后就退出内层遍历 { tIo.UpdateInputData(item); break; } } } else if (IO is AI8) { AI8 tIo = (AI8)IO; foreach (var item in Tool.UIlist) { if (item.m_nodeID == tIo.IOData.m_nodeID)//找到后就退出内层遍历 { tIo.UpdateInputData(item); break; } } } else if (IO is AI8C) { AI8C tIo = (AI8C)IO; foreach (var item in Tool.UIlist) { if (item.m_nodeID.ToString() == tIo.modelView.NodeID) //找到后就退出内层遍历 //不能再加上是否在线的标志,否则掉线后无法更新UI { //for (int i = 0; i < item.m_DataAI.Count; i++) //{ // item.m_DataAI[i] = T; //} tIo.UpdateInputData(item); break; } } } } #endregion }