public bool ConnPlc(string ip, int port, EnumPlcCata plcCata, EnumNetProto proto) { try { if (SimMode) { plcRW = new PlcRWSim(); } else { PLCRwMCPro plcRwMC = new PLCRwMCPro(plcCata, 20, 20); plcRW = plcRwMC; plcRwMC.PlcCata = plcCata; plcRwMC.ConnStr = ip + ":" + port.ToString(); } stacker.PlcRW = plcRW; string reStr = ""; if (plcRW.ConnectPLC(ref reStr)) { Console.WriteLine("PLC连接成功!"); return(true); } else { Console.WriteLine("PLC连接失败!"); return(false); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); return(false); } }
private void Form1_Load(object sender, EventArgs e) { Console.SetOut(new TextBoxWriter(this.richTextBoxLog)); plcForm2.MdiParent = this; this.panelPlc2.Controls.Clear(); this.panelPlc2.Controls.Add(plcForm2); plcForm2.Dock = DockStyle.Fill; plcForm2.Show(); rfidWQForm.MdiParent = this; this.panelWqrfid.Controls.Clear(); this.panelWqrfid.Controls.Add(rfidWQForm); rfidWQForm.Dock = DockStyle.Fill; rfidWQForm.Show(); rfidSgUrb3Form.MdiParent = this; this.panelSgUrb3.Controls.Clear(); this.panelSgUrb3.Controls.Add(rfidSgUrb3Form); rfidSgUrb3Form.Dock = DockStyle.Fill; rfidSgUrb3Form.Show(); // 隐藏不用 的tabpage //this.tabControl1.TabPages.Remove(this.tabPage1); // this.tabControl1.TabPages.Remove(this.tabPage3); this.tabControl1.TabPages.Remove(this.tabPage5); // this.comboBoxPlcObjList.SelectedIndex = 0; // this.tabPage1.Enabled = false; this.comboBoxDatabitSel.Items.AddRange(new string[] { "32位整数", "64位整数" }); this.comboBoxDatabitSel.SelectedIndex = 0; #region PLC相关 this.cbxPlcCata.Items.AddRange(new string[] { "FX5U", "Q系列", "Fx3uNET模块" }); this.cbxPlcCata.SelectedIndex = 0; plcRwObj2 = new PLCRwMCPro(EnumPlcCata.FX5U, 1000, 1000); plcRwObj2.eventLinkLost += PlcLostConnectHandler; plcRwIF = plcRwObj2; plcFx485 = new PlcRW485BD(); plcFx485.StationNumber = 1; #endregion HFReaderIF readerIF = new HFReaderIF(); rfidRW = new SgrfidRW(1); rfidRW.ReaderIF = readerIF; this.comboBoxComports.Items.Clear(); barcodeReader = new BarcodeRWHonevor(1); string[] ports = System.IO.Ports.SerialPort.GetPortNames(); foreach (string port in ports) { this.comboBoxComports.Items.Add(port); this.comboBoxFXComs.Items.Add(port); this.comboBoxBarcode.Items.Add(port); this.comboBoxAirdetect.Items.Add(port); } if (ports != null && ports.Count() > 0) { this.comboBoxComports.Text = ports[0]; this.comboBoxFXComs.Text = ports[0]; } rfidWorkingThread = new Thread(new ThreadStart(SysWorkingProc)); rfidWorkingThread.IsBackground = true; this.printer = new PrinterRW(1, "", 8000); string dbConn = string.Format("Data Source ={0}\\SQLEXPRESS;Initial Catalog=FangTAIZaojuA;User ID=sa;Password=123456;", this.textBoxPrinterIP.Text); this.printerDB = new PrinterRWdb(dbConn); //MES 测试初始化 this.textBoxMESwsAddr.Text = "http://192.168.100.90:8188/soap/EventService?wsdl"; this.comboBoxInterfaces.Items.AddRange(new string[] { "assembleDown", "assembleRepair" }); this.comboBoxInterfaces.SelectedIndex = 0; this.comboBoxDTs.Items.AddRange(new string[] { "FT_MES_STEP_INFO", "FT_MES_STEP_INFO_DETAIL" }); this.comboBoxDTs.SelectedIndex = 0; this.textBoxMesParams.Text = "1002002100086L451607280194,L45"; this.richTextBoxMesDBConn.Text = @"Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.94)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PRQMESDB) ) ) ;User Id=prqminda1;Password=prqminda1;Connection Timeout=5;"; // this.richTextBoxMesDBConn.Text = @"Data Source=(DESCRIPTION = // (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.94)(PORT = 1521)) // (CONNECT_DATA = // (SERVER = DEDICATED) // (SERVICE_NAME = PRQMESDB) // ) // ) //;User Id=prqminda1;Password=prqminda1;"; //这个也可以放到Web.Config中。 //气密 airDetecter = new AirDetectFL295CRW(1, ""); }
private bool ParseCommDevCfg(XElement commDevRoot, ref string reStr) { try { //1 PLC XElement plcRoot = commDevRoot.Element("PLCCfg"); plcRWs = new List <IPlcRW>(); IEnumerable <XElement> plcXES = plcRoot.Elements("PLC"); foreach (XElement plcXE in plcXES) { string connStr = plcXE.Value.ToString(); int db1Len = 100, db2Len = 100; db1Len = int.Parse(plcXE.Attribute("db1Len").Value.ToString()); db2Len = int.Parse(plcXE.Attribute("db2Len").Value.ToString()); int plcID = int.Parse(plcXE.Attribute("id").Value.ToString()); EnumPlcCata plcCata = EnumPlcCata.FX5U; if (plcXE.Attribute("cata") != null) { string strPlcCata = plcXE.Attribute("cata").Value.ToString(); plcCata = (EnumPlcCata)Enum.Parse(typeof(EnumPlcCata), strPlcCata); } PLCRwMCPro plcRW = new PLCRwMCPro(plcCata, db1Len, db2Len); // PLCRwMCPro2 plcRW = new PLCRwMCPro2(db1Len, db2Len); plcRW.ConnStr = plcXE.Value.ToString(); plcRW.PlcID = plcID; plcRWs.Add(plcRW); } //2 rfid XElement rfidRootXE = commDevRoot.Element("RfidCfg"); IEnumerable <XElement> rfidXES = rfidRootXE.Elements("RFID"); this.rfidRWs = new List <IrfidRW>(); foreach (XElement rfidXE in rfidXES) { byte id = byte.Parse(rfidXE.Attribute("id").Value.ToString()); string addr = rfidXE.Attribute("CommAddr").Value.ToString(); string[] strAddrArray = addr.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries); string ip = strAddrArray[0]; ushort port = ushort.Parse(strAddrArray[1]); string hostAddr = rfidXE.Attribute("HostAddr").Value.ToString(); strAddrArray = hostAddr.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries); string hostip = strAddrArray[0]; uint hostport = uint.Parse(strAddrArray[1]); //WqwlRfidRW rfidRW = new WqwlRfidRW(EnumTag.TagEPCC1G2, id, ip, port); WqRfidUdp rfidRW = new WqRfidUdp(EnumTag.TagEPCC1G2, id, ip, port, (uint)hostport); //=========================更改读卡方式======================================//np_modified1231 //WqwlRfidRW rfidRW = new WqwlRfidRW(EnumTag.TagEPCC1G2, id, ip, (uint)port); //rfidRW.HostIP = hostip; //rfidRW.HostPort = hostport; //rfidRW.ReaderIP = ip; //rfidRW.ReaderPort = (uint)port; //=======================================================================// Console.WriteLine("ID = " + id.ToString() + " IP = " + ip.ToString() + " Port = " + port.ToString() + " HostPort = " + hostport.ToString()); //rfidRW.HostIP = "192.168.1.251"; // rfidRW.HostPort = (uint)(9000+id); //SygoleHFReaderIF.HFReaderIF readerIF = new SygoleHFReaderIF.HFReaderIF(); //SgrfidRW rfidRW = new SgrfidRW(id); //rfidRW.ReaderIF = readerIF; //rfidRW.ReaderIF.ComPort = commPort; rfidRWs.Add(rfidRW); } //3 条码枪 XElement barcoderRootXE = commDevRoot.Element("BarScannerCfg"); IEnumerable <XElement> barcodes = barcoderRootXE.Elements("BarScanner"); barcodeRWList = new List <IBarcodeRW>(); foreach (XElement barcodeXE in barcodes) { byte id = byte.Parse(barcodeXE.Attribute("id").Value.ToString()); string commPort = barcodeXE.Attribute("CommAddr").Value.ToString(); string barcodeLenth = barcodeXE.Attribute("BarCodeLenth").Value.ToString(); BarcodeRWHoneywell barcodeReader = new BarcodeRWHoneywell(id); barcodeReader.barcodeLen = Convert.ToInt32(barcodeLenth); //BarcodeRWHonevor barcodeReader = new BarcodeRWHonevor(id); //barcodeReader.bar barcodeReader.TriggerMode = EnumTriggerMode.手动按钮触发; //System.IO.Ports.SerialPort comPort = new System.IO.Ports.SerialPort(commPort); //comPort.BaudRate = 115200; //comPort.DataBits = 8; //comPort.StopBits = System.IO.Ports.StopBits.One; //comPort.Parity = System.IO.Ports.Parity.None; barcodeReader.ComPortObj.PortName = commPort; barcodeReader.ComPortObj.BaudRate = 115200; barcodeReader.ComPortObj.DataBits = 8; barcodeReader.ComPortObj.StopBits = System.IO.Ports.StopBits.One; barcodeReader.ComPortObj.Parity = System.IO.Ports.Parity.None; barcodeRWList.Add(barcodeReader); } //4 杭可装载服务器 //XElement hkFillSvcXECfg = commDevRoot.Element("HKFillServerCfg"); //string hkSvcIP = "127.0.0.1"; //int hkSvcPort = 13535; //if(hkFillSvcXECfg != null) //{ // foreach (XElement hkXE in hkFillSvcXECfg.Elements("HkServer")) // { // int hkID = int.Parse(hkXE.Attribute("id").Value.ToString()); // hkSvcIP = hkXE.Attribute("ip").Value.ToString(); // hkSvcPort = int.Parse(hkXE.Attribute("port").Value.ToString()); // HKAccess hk = new HKAccess(hkID,hkSvcIP, hkSvcPort); // hk.RecvTimeOut = 5000; // hkAccessList.Add(hk); // } //} //string ocvDBConn = hkFillSvcXECfg.Element("HkOCVDB").Attribute("conn").Value.ToString(); // "Data Source = 192.168.100.20;Initial Catalog=SRANCH;User ID=L_Guest;Password=Guest@123;"; // ocvAccess = new OcvAccess(ocvDBConn, 36); CommDevConnect(); return(true); } catch (Exception ex) { reStr = ex.ToString(); return(false); } }
private bool ParseCommDevCfg(XElement commDevRoot, ref string reStr) { try { //1 PLC XElement plcXE = commDevRoot.Element("PLCCfg"); string addr = plcXE.Element("PLCAddr").Value.ToString(); plcRWList = new List <IPlcRW>(); if (plcXE.Element("PLCVendor").Value.ToString() == "三菱Q") { PLCRwMCPro plcObj = new PLCRwMCPro(EnumPlcCata.Qn, SysCfgModel.DB1Len, SysCfgModel.DB2Len); plcObj.NetProto = EnumNetProto.TCP;// EnumNetProto.UDP; plcObj.PlcID = 1; plcObj.ConnStr = addr; plcObj.StationNumber = 1; this.plcRWList.Add(plcObj); } else { reStr = "不可识别的PLC型号"; return(false); } //2 rfid XElement rfidRootXE = commDevRoot.Element("SgRfidCfg"); IEnumerable <XElement> rfidXES = rfidRootXE.Elements("RFID"); rfidList = new List <IrfidRW>(); bool tcpComm = false; if (rfidRootXE.Attribute("CommType").Value.ToString() == "TCPIP") { tcpComm = true; } foreach (XElement rfidXE in rfidXES) { byte id = byte.Parse(rfidXE.Attribute("id").Value.ToString()); string commAddr = rfidXE.Attribute("CommAddr").Value.ToString(); SygoleHFReaderIF.HFReaderIF readerIF = new SygoleHFReaderIF.HFReaderIF(); SgrfidRW rfidRW = new SgrfidRW(id); rfidRW.ReaderIF = readerIF; if (tcpComm) { rfidRW.ReaderIF.commType = SygoleHFReaderIF.EnumCommType.TCPNET; rfidRW.ReaderIF.readerIP = commAddr; rfidRW.ReaderIF.readerPort = 3001; } else { rfidRW.ReaderIF.ComPort = commAddr; } rfidList.Add(rfidRW); } //3 条码枪 XElement barcoderRootXE = commDevRoot.Element("BarScannerCfg"); IEnumerable <XElement> barcodes = barcoderRootXE.Elements("BarScanner"); foreach (XElement barcodeXE in barcodes) { byte id = byte.Parse(barcodeXE.Attribute("id").Value.ToString()); string commPort = barcodeXE.Attribute("CommAddr").Value.ToString(); BarcodeRWHonevor barcodeReader = new BarcodeRWHonevor(id); SerialPort comPort = new SerialPort(commPort); comPort.BaudRate = 115200; comPort.DataBits = 8; comPort.StopBits = StopBits.One; comPort.Parity = Parity.None; barcodeReader.ComPortObj = comPort; barcodeRWList.Add(barcodeReader); } //4 气密仪 XElement airdetectRootXE = commDevRoot.Element("AircheckMachineCfg"); IEnumerable <XElement> airdetects = airdetectRootXE.Elements("AircheckMachine"); airDetectList = new List <IAirlossDetectDev>(); foreach (XElement airdetectXE in airdetects) { byte id = byte.Parse(airdetectXE.Attribute("id").Value.ToString()); string commPort = airdetectXE.Attribute("CommAddr").Value.ToString(); AirDetectFL295CRW airdetectRW = new AirDetectFL295CRW(id, commPort); airDetectList.Add(airdetectRW); } //5 打标机 XElement printerRootXE = commDevRoot.Element("LabelPrinterCfg"); IEnumerable <XElement> printers = printerRootXE.Elements("LabelPrinter"); this.printerList = new List <IPrinterInfoDev>(); foreach (XElement printerXE in printers) { byte id = byte.Parse(printerXE.Attribute("id").Value.ToString()); string ip = printerXE.Attribute("ip").Value.ToString(); string db = printerXE.Attribute("dbName").Value.ToString(); short port = short.Parse(printerXE.Attribute("port").Value.ToString()); string userName = printerXE.Attribute("user").Value.ToString(); string pswd = printerXE.Attribute("pswd").Value.ToString(); PrinterRW printerRW = new PrinterRW(id, ip, port); string printerDBStr = string.Format("Data Source ={0};Initial Catalog={1};User ID={2};Password={3};", ip, db, userName, pswd); PrinterRWdb printerRWDb = new PrinterRWdb(printerDBStr); this.printerList.Add(printerRWDb); //this.printerList.Add(printerRW); } return(true); } catch (Exception ex) { reStr = ex.ToString(); return(false); } }
private bool ParseCommDevCfg(XElement commDevRoot, ref string reStr) { try { //1 PLC XElement plcRoot = commDevRoot.Element("PLCCfg"); plcRWs = new List <IPlcRW>(); IEnumerable <XElement> plcXES = plcRoot.Elements("PLC"); if (plcRoot.Attribute("Vendor").Value.ToString() == "欧姆龙") { string pcIP = "192.168.0.88"; foreach (XElement plcXE in plcXES) { string connStr = plcXE.Value.ToString(); string[] strArray = connStr.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries); string plcIP = strArray[0]; int plcPort = int.Parse(strArray[1]); int db1Len = 100, db2Len = 100; db1Len = int.Parse(plcXE.Attribute("db1Len").Value.ToString()); db2Len = int.Parse(plcXE.Attribute("db2Len").Value.ToString()); int plcID = int.Parse(plcXE.Attribute("id").Value.ToString()); OmlPlcRW plcRW = null; if (plcXE.Attribute("netPro").Value.ToString() == "TCP") { plcRW = new OmlPlcRW(EnumPLCType.OML_TCP, plcIP, plcPort, pcIP, null); } else { plcRW = new OmlPlcRW(EnumPLCType.OML_UDP, plcIP, plcPort, pcIP, null); } plcRW.PlcRole = plcXE.Attribute("role").Value.ToString(); // PLCRwMCPro2 plcRW = new PLCRwMCPro2(db1Len, db2Len); plcRW.PlcID = plcID; plcRWs.Add(plcRW); } } else if (plcRoot.Attribute("Vendor").Value.ToString() == "三菱") { foreach (XElement plcXE in plcXES) { string connStr = plcXE.Value.ToString(); int db1Len = 100, db2Len = 100; db1Len = int.Parse(plcXE.Attribute("db1Len").Value.ToString()); db2Len = int.Parse(plcXE.Attribute("db2Len").Value.ToString()); int plcID = int.Parse(plcXE.Attribute("id").Value.ToString()); EnumPlcCata plcCata = EnumPlcCata.FX5U; if (plcXE.Attribute("cata") != null) { string strPlcCata = plcXE.Attribute("cata").Value.ToString(); plcCata = (EnumPlcCata)Enum.Parse(typeof(EnumPlcCata), strPlcCata); } PLCRwMCPro plcRW = new PLCRwMCPro(plcCata, db1Len, db2Len); // PLCRwMCPro2 plcRW = new PLCRwMCPro2(db1Len, db2Len); plcRW.ConnStr = plcXE.Value.ToString(); plcRW.PlcID = plcID; plcRWs.Add(plcRW); } } else { reStr = "不识别的PLC厂家"; return(false); } //2 rfid XElement rfidRootXE = commDevRoot.Element("RfidCfg"); IEnumerable <XElement> rfidXES = rfidRootXE.Elements("RFID"); this.rfidRWs = new List <IrfidRW>(); foreach (XElement rfidXE in rfidXES) { byte id = byte.Parse(rfidXE.Attribute("id").Value.ToString()); string addr = rfidXE.Attribute("CommAddr").Value.ToString(); string[] strAddrArray = addr.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries); string ip = strAddrArray[0]; int port = int.Parse(strAddrArray[1]); string rfidType = rfidXE.Value.Trim(); IrfidRW rfidRW = null; //if (rfidType == "C线自动打带机") //{ rfidRW = new RfidRW_CFRH390_Tcp(id, ip, port, null); //} //else //{ // rfidRW = new RfidCF(id, ip, port); //} this.rfidRWs.Add(rfidRW); } //3 条码枪 XElement barcoderRootXE = commDevRoot.Element("BarScannerCfg"); IEnumerable <XElement> barcodes = barcoderRootXE.Elements("BarScanner"); foreach (XElement barcodeXE in barcodes) { byte id = byte.Parse(barcodeXE.Attribute("id").Value.ToString()); string connStr = barcodeXE.Attribute("CommAddr").Value.ToString(); string[] strArray = connStr.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries); string ip = strArray[0]; int port = int.Parse(strArray[1]); BarcodeRWSR_750 barcodeReader = new BarcodeRWSR_750(id, ip, port, null); //BarcodeRWHonevor barcodeReader = new BarcodeRWHonevor(id); //if(id== 1) //{ // barcodeReader.TriggerMode = EnumTriggerMode.手动按钮触发; //} //SerialPort comPort = new SerialPort(commPort); //comPort.BaudRate = 115200; //comPort.DataBits = 8; //comPort.StopBits = StopBits.One; //comPort.Parity = Parity.None; //barcodeReader.ComPortObj = comPort; this.barcodeRWs.Add(barcodeReader); } //4 CCD检测设备 XElement CCDRoot = commDevRoot.Element("CCDCfg"); IEnumerable <XElement> ccdXES = CCDRoot.Elements("CCD"); int pcPort = 8888; foreach (XElement ccd in ccdXES) { int id = int.Parse(ccd.Attribute("id").Value.ToString()); string connStr = ccd.Attribute("CommAddr").Value.ToString(); MingmeiDeviceAcc ccdDev = new MingmeiDeviceAcc(); ccdDev.LocalPort = pcPort; pcPort++; ccdDev.Role = ccd.Attribute("role").Value.ToString(); ccdDev.ConnStr = connStr; ccdDev.DevID = id; ccdRWs.Add(ccdDev); } return(true); } catch (Exception ex) { reStr = ex.ToString(); return(false); } }
public bool ParseCommdev(XElement commDevRoot, ref string reStr) { try { //1 PLC plcRWs = new List <IPlcRW>(); XElement plcRoot = commDevRoot.Element("PLCCfg"); IEnumerable <XElement> plcXES = plcRoot.Elements("PLC"); int plcSum = plcXES.Count(); foreach (XElement plcXE in plcXES) { string connStr = plcXE.Value.ToString(); int db1Len = 100, db2Len = 100; db1Len = int.Parse(plcXE.Attribute("db1Len").Value.ToString()); db2Len = int.Parse(plcXE.Attribute("db2Len").Value.ToString()); int plcID = int.Parse(plcXE.Attribute("id").Value.ToString()); EnumPlcCata plcCata = EnumPlcCata.FX5U; if (plcXE.Attribute("cata") != null) { string strPlcCata = plcXE.Attribute("cata").Value.ToString(); plcCata = (EnumPlcCata)Enum.Parse(typeof(EnumPlcCata), strPlcCata); } if (SysCfg.SysCfgModel.SimMode) { PlcRWSim plcRW = new PlcRWSim(); plcRW.PlcID = plcID; plcRW.PlcRole = plcXE.Attribute("role").Value.ToString(); plcRWs.Add(plcRW); } else { PLCRwMCPro plcRW = new PLCRwMCPro(plcCata, db1Len, db2Len); plcRW.PlcRole = plcXE.Attribute("role").Value.ToString(); // PLCRwMCPro2 plcRW = new PLCRwMCPro2(db1Len, db2Len); plcRW.ConnStr = plcXE.Value.ToString(); plcRW.PlcID = plcID; plcRWs.Add(plcRW); } } //2 rfid XElement rfidRootXE = commDevRoot.Element("RfidCfg"); IEnumerable <XElement> rfidXES = rfidRootXE.Elements("RFID"); this.rfidRWs = new List <IrfidRW>(); foreach (XElement rfidXE in rfidXES) { byte id = byte.Parse(rfidXE.Attribute("id").Value.ToString()); string addr = rfidXE.Attribute("CommAddr").Value.ToString(); string[] strAddrArray = addr.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries); string ip = strAddrArray[0]; ushort port = ushort.Parse(strAddrArray[1]); //WqwlRfidRW rfidRW = new WqwlRfidRW(EnumTag.TagEPCC1G2, id, ip, port); WqRfidUdp rfidRW = new WqRfidUdp(EnumTag.TagEPCC1G2, id, ip, port, (uint)(9000 + id)); //SygoleHFReaderIF.HFReaderIF readerIF = new SygoleHFReaderIF.HFReaderIF(); //SgrfidRW rfidRW = new SgrfidRW(id); //rfidRW.ReaderIF = readerIF; //rfidRW.ReaderIF.ComPort = commPort; rfidRWs.Add(rfidRW); } //3 条码枪 XElement barcoderRootXE = commDevRoot.Element("BarScannerCfg"); IEnumerable <XElement> barcodes = barcoderRootXE.Elements("BarScanner"); barcodeRWList = new List <IBarcodeRW>(); foreach (XElement barcodeXE in barcodes) { byte id = byte.Parse(barcodeXE.Attribute("id").Value.ToString()); string commPort = barcodeXE.Attribute("CommAddr").Value.ToString(); if (SysCfg.SysCfgModel.SimMode) { BarcodeRWSim barSim = new BarcodeRWSim(id); barSim.Role = barcodeXE.Attribute("role").Value.ToString(); barcodeRWList.Add(barSim); } else { BarcodeRWHonevor barcodeReader = new BarcodeRWHonevor(id); barcodeReader.TriggerMode = EnumTriggerMode.序命令触发; barcodeReader.Role = barcodeXE.Attribute("role").Value.ToString(); //System.IO.Ports.SerialPort comPort = new System.IO.Ports.SerialPort(commPort); //comPort.BaudRate = 115200; //comPort.DataBits = 8; //comPort.StopBits = System.IO.Ports.StopBits.One; //comPort.Parity = System.IO.Ports.Parity.None; barcodeReader.ComPortObj.PortName = commPort; barcodeReader.ComPortObj.BaudRate = 115200; barcodeReader.ComPortObj.DataBits = 8; barcodeReader.ComPortObj.StopBits = System.IO.Ports.StopBits.One; barcodeReader.ComPortObj.Parity = System.IO.Ports.Parity.None; barcodeRWList.Add(barcodeReader); } } return(true); } catch (Exception ex) { reStr = "通信设备配置解析失败,发生系统异常:" + ex.ToString(); return(false); } }
private void BusinessLoop()//List<CtlNodeBaseModel> myNodeList { try { DateTime commSt = System.DateTime.Now; TimeSpan ts = commSt - this.lastStTime; string dispCommInfo = string.Format("PLC通信周期:{0}毫秒", (int)ts.TotalMilliseconds); view.DispCommInfo(dispCommInfo); if (ts.TotalMilliseconds > 500) { logRecorder.AddDebugLog(objectName, dispCommInfo); } lastStTime = commSt; if (!NodeFactory.SimMode) { PLCRwMCPro plcRW = plcRWs[0] as PLCRwMCPro; string heartAddr = "D2700"; if (!plcRW.WriteDB(heartAddr, 1)) { Console.WriteLine("PLC通信失败!"); } //Console.WriteLine("P2"); //return; if (SysCfgModel.PlcCommSynMode) { return; } #region 读DB2 short[] tempDb2Vals = new short[SysCfgModel.DB2Len]; if (!plcRW.ReadMultiDB(SysCfgModel.DB2Start, SysCfgModel.DB2Len, ref tempDb2Vals)) { // logRecorder.AddLog(new LogModel(objectName, "PLC通信失败!", EnumLoglevel.错误)); Console.WriteLine("PLC通信失败!"); string reStr = ""; plcRW.CloseConnect(); if (!plcRW.ConnectPLC(ref reStr)) { // logRecorder.AddLog(new LogModel(objectName, "PLC重新连接失败!", EnumLoglevel.错误)); Console.WriteLine("PLC重新连接失败!"); foreach (CtlNodeBaseModel node in nodeList) { node.CurrentStat.Status = EnumNodeStatus.设备故障; node.CurrentStat.StatDescribe = "PLC通信断开"; } return; } else { logRecorder.AddLog(new LogModel(objectName, "PLC重新连接成功!", EnumLoglevel.错误)); return; } } plcRW.DB2Switch(tempDb2Vals); #endregion #region 写DB1 short[] tempDB1ValsSnd = new short[SysCfgModel.DB1Len]; plcRW.DB1Switch(ref tempDB1ValsSnd); if (!plcRW.WriteMultiDB(SysCfgModel.DB1Start, SysCfgModel.DB1Len, tempDB1ValsSnd)) { //logRecorder.AddLog(new LogModel(objectName, "PLC通信失败!", EnumLoglevel.错误)); Console.WriteLine("PLC重新连接失败!"); string reStr = ""; plcRW.CloseConnect(); if (!plcRW.ConnectPLC(ref reStr)) { //logRecorder.AddLog(new LogModel(objectName, "PLC重新连接失败!", EnumLoglevel.错误)); Console.WriteLine("PLC重新连接失败!"); return; } else { logRecorder.AddLog(new LogModel(objectName, "PLC重新连接成功!", EnumLoglevel.错误)); return; } } plcRW.PlcRWStatUpdate(); #endregion return; } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }