public IoCardManager() { foreach (var mem in ConfigManager.Instance.HardWareConfigrationMuster.IoCardConfigs) { IoCardBrand _iocardbrand; if (!mem.Enable) { continue; } if (m_IoCards.ContainsKey(mem.DeviceName)) { //show error info in this place continue; } bool ismotioncard = false; foreach (var motionCard in ConfigManager.Instance.HardWareConfigrationMuster.MotionCardConfigs) { if (mem.Guid == motionCard.Guid) { ismotioncard = true; IIoCard _motionCard = (IIoCard)Hardware.MotionCardManager.Instance.GetByKey(motionCard.DeviceName); m_IoCards.Add(mem.DeviceName, _motionCard); break; } } if (ismotioncard) { continue; } if (Enum.TryParse <IoCardBrand>(mem.IoCardBrand, out _iocardbrand)) { switch (_iocardbrand) { case IoCardBrand.ZMotion_EMC0064: bool isfind = false; foreach (var serialInfo in ConfigManager.Instance.HardWareConfigrationMuster.SerialPortConfigs) { if (serialInfo.BindGuid == mem.Guid) { EMC0064 eMC0064 = new EMC0064(mem.Guid, mem.DeviceName, mem.InputCount, mem.OutputCount, serialInfo.PortName); m_IoCards.Add(mem.DeviceName, eMC0064); isfind = true; break; } } if (!isfind) { foreach (var tcpInfo in ConfigManager.Instance.HardWareConfigrationMuster.TcpClientConfigs) { if (tcpInfo.BindGuid == mem.Guid) { EMC0064 eMC0064 = new EMC0064(mem.Guid, mem.DeviceName, mem.InputCount, mem.OutputCount, tcpInfo.LocalIpAddress); m_IoCards.Add(mem.DeviceName, eMC0064); isfind = true; break; } } } if (!isfind) { throw new Exception($"未找到与 ZMotion_EMC0064 {mem.DeviceName } 相对应的通讯配置文件"); } isfind = false; break; case IoCardBrand.SerialIOCardTest: foreach (var serialInfo in ConfigManager.Instance.HardWareConfigrationMuster.SerialPortConfigs) { if (serialInfo.BindGuid == mem.Guid) { SerialIOCardTest serialIOCardTest = new SerialIOCardTest(mem.Guid, mem.DeviceName, mem.InputCount, mem.OutputCount); m_IoCards.Add(mem.DeviceName, serialIOCardTest); break; } } break; case IoCardBrand.NLK_IOCard_16: foreach (var serialInfo in ConfigManager.Instance.HardWareConfigrationMuster.SerialPortConfigs) { if (serialInfo.BindGuid == mem.Guid) { NLK_IOCard_16 iocard = new NLK_IOCard_16(mem.Guid, mem.DeviceName, mem.InputCount, mem.OutputCount, serialInfo.CardIndex, serialInfo.PortName, serialInfo.BaudRate, serialInfo.StopBits, serialInfo.Parity, serialInfo.NewLine); if (iocard.Open()) { m_IoCards.Add(mem.DeviceName, iocard); } iocard.StartWorking(); break; } } break; } } } }
/// <summary> /// /// </summary> /// <param name="ioCard">the iocard device to band</param> /// <param name="IsInput">the decice is a input or out io decice</param> /// <param name="index">the index to band to the iocard decice</param> public SingleIoDevice(IIoCard ioCard, bool IsInput, int index, string devicename, Guid guid) : base(devicename, guid) { m_ioCard = ioCard; m_IsInput = IsInput; m_index = index; }