Ejemplo n.º 1
0
        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("");
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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;
            }
        }