public string SelectStatus(string userName, string ip, int port) { PLCModBusRtuDriver driver = drivers.Find(p => p.Descriptor.IpAddress == ip && p.Descriptor.Port == port); if (driver != null) { if (driver.ConnStatus == PLC.ModBus.Rtu.Driver.TcpConn.PortStatus.Connected) { driver.ReceSelectFromWeb(userName); } return(driver.ConnStatus.ToString()); } //return "not find"; return(""); }
private PLCModBusRtuDriver GetDriverByXmlNode(XmlElement element) { byte salve = byte.Parse(element.Attributes["salve"].Value, NumberStyles.HexNumber); string ipAddress = element.Attributes["ipAddress"].Value; int port = 502; int.TryParse(element.Attributes["port"]?.Value, out port); string sendInterval = element.Attributes["sendInterval"].Value; int interval = 10; int.TryParse(sendInterval, out interval); //关于寄存器 这里暂时不做配置 PLCDescriptor descriptor = new PLCDescriptor(salve, ipAddress, port, interval); PLCModBusRtuDriver driver = new PLCModBusRtuDriver(descriptor); return(driver); }
private AppFrame() { obj = new object(); queue = new Queue <ParkingLotStatusEventArgs>(); dynamic type = (new Program()).GetType(); string currentDirectory = Path.GetDirectoryName(type.Assembly.Location); string filePath = $"{currentDirectory}\\Config\\Config.xml"; drivers = new List <PLCModBusRtuDriver>(); if (File.Exists(filePath)) { //读取整个配置 XmlDocument document = new XmlDocument(); document.Load(filePath); XmlNodeList nodeList = document.SelectNodes("/PLCDrivers/PLCDriver"); for (int i = 0; i < nodeList.Count; i++) { if (nodeList[i].NodeType == XmlNodeType.Element) { //解析驱动 XmlElement element = nodeList[i] as XmlElement; PLCModBusRtuDriver driver = GetDriverByXmlNode(element); if (driver != null) { drivers.Add(driver); } } } } selectThread = new Thread(SelectEventMethod); selectThread.IsBackground = true; selectThread.Start(); for (int i = 0; i < drivers.Count; i++) { drivers[i].OnSelected += AppFrame_OnSelected; } }