private void Button_Click_1(object sender, RoutedEventArgs e) { //((MainNetworkClass)DataContext).SendScanBox(Box_Number.Text, Box_Number.Text); network.Client_SendScanBox(Box_Number.Text, Box_Number.Text); try { network.GetDataFromHost(); } catch (Exception ex) { } }
public void RunMiddlewareScan(object msgobj) { MainNetworkClass networkmain = (MainNetworkClass)msgobj; int counter = 0; while (!bTerminate) { Thread.Sleep(10); try { counter++; connected = networkmain.connected; //if not connected to middleware do a reconnection if (networkmain.connected == false) { System.Net.IPHostEntry oEntry = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()); System.Net.IPAddress address = oEntry.AddressList[0]; XmlDocument doc = new XmlDocument(); doc.Load(@"Config.xml"); XmlNode node = doc.SelectSingleNode(@"/CONFIG/MIDDLEWARE/ADD"); address = System.Net.IPAddress.Parse(node.InnerText); node = doc.SelectSingleNode(@"/CONFIG/MIDDLEWARE/PORT"); NetworkAddress = "Trying to connect to " + address.ToString() + " Port : " + node.InnerText; IPAddress ipAddress = address;//Dns.Resolve("localhost").AddressList[2]; if (networkmain.ConnectToHost(ipAddress) == false) { NetworkAddress = "Connected to MICServer " + address.ToString() + " Port : " + node.InnerText + " Fail" + " V9.5.13.38Z_DB"; Thread.Sleep(100);// try to connect to server UserName1 = ""; UserName2 = ""; StationStarStopLog.Info("Middleware Connection break " + ipAddress); networkmain.linePack.Info("Middleware Connection break " + ipAddress); MyEventQ.AddQ("1;MiddlewareCommunicationBreak"); //Push message to stack // EvtLog.Info("1;MiddlewareCommunicationBreak"); continue; } NetworkAddress = "Connected to MICServer " + address.ToString() + " Port : " + node.InnerText + " V9.5.13.38Z_DB"; MyEventQ.AddQ("4;InnogrityServerApplicationStarted"); BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += new DoWorkEventHandler(delegate(object o, DoWorkEventArgs args) { ClearAllJam(); }); bw.RunWorkerAsync(); // EvtLog.Info("4;InnogrityServerApplicationStarted"); } if (networkmain.connected)// if connected, do check { if (counter > 100) { networkmain.CheckHost();//have to use proper xml to test check or else server may crash counter = 0; } try { networkmain.GetDataFromHost(); } catch (Exception ex) { } } #region Station2 //Station 2 check if there is any outgoing messages //Finishing label if (evt_FinishLabelRequest.WaitOne(0)) { string Boxnumber = "myboxnumberbarcode"; //sample box number/ finishing label request //save finishing label...to label tracking, label tracking to be updated..later when server reply //send finishing label request if (networkmain.Client_SendScanBox(Scanboxid) == true) //previously wait for reply .. now reply is waited seperately //update label tracking data { #region OEEStep2 //OEE MODULE - GET ID and Bind ID number With FL int OEEid = 0; try { OEEid = rq.ReqLastID(); rq.UpdFLbyID(Scanboxid, OEEid); } catch (Exception ex) { IGTOEELog.Info("OEEStep2" + ex.ToString()); } #endregion SendFL = Scanboxid; Boolean bHotlot = false; string sHotlot = ""; if (PLCQueryRx[11 + 109 * 2] == 0x08) //DM1019 --Hotlot { bHotlot = true; sHotlot = "1"; networkmain.stn2log = "HotLot :" + Scanboxid; networkmain.linePack.Info("HotLot :" + Scanboxid); } else { sHotlot = "0"; } //while ((!networkmain.updatefltrackinginfomation(Scanboxid, OEEid.ToString(), sHotlot) && !bTerminate)) //{ // Thread.Sleep(100); //} while ((!networkmain.updatefltrackinginfomationb(Scanboxid, OEEid.ToString(), bHotlot) && !bTerminate)) { Thread.Sleep(100); } evt_FinishLabelRequest.Reset();//reset PLC request event StationStarStopLog.Info("Running Start " + Scanboxid); networkmain.linePack.Info("Already Sending Boxid to Middleware " + Scanboxid); PLCWriteCommand[21] = 0x08;// send request complete DM200 } else { //will not write into tracking list. //There is a send fail! evt_FinishLabelRequest.Reset();//reset PLC request event //networkmain.linePack.Info("Reject FL at buffer because of same FL coming two times " + Scanboxid); networkmain.OperatorLog = "Same FL comging two times " + Scanboxid; networkmain.Client_SendEventMessage("84", "ST2 BUFFER FL DUPLICATE REJECT", "BOX_ID", Scanboxid); AllRJEvent.Info("84" + ";" + "ST2 BUFFER FL DUPPLICATE REJECT" + ";" + "BOX_ID" + ";" + Scanboxid); rq.INS_Func(DateTime.Now); int BufferDup = rq.ReqLastID(); rq.UpdST4RJ(BufferDup.ToString(), 4, "294"); PLCWriteCommand[21] = 0x0F;// send request complete DM200 } } #endregion #region MiddlewareToIGT LoginCheckQC if (networkmain.MiddlewareToIGTEvt_LoginCheckQC1.WaitOne(0)) { try { if (networkmain.CheckServerConnectionWithMiddlwareForQC1(UserName1) == false) { StationStarStopLog.Info("Connection String not Match With Middleware,OP1 Logout " + UserName1); networkmain.linePack.Info("Connection String not Match With Middleware,OP1 Logout " + UserName1); networkmain.Client_SendQCStationLogout("1", networkmain.QC1LoginConnectionCheck1); UserName1 = ""; networkmain.QC1LogOutSendReady = true; PLCWriteCommand6[PLCWriteCmdOP01LoginLogout] = 0x00; } networkmain.MiddlewareToIGTEvt_LoginCheckQC1.Reset(); } catch { } } if (networkmain.MiddlewareToIGTEvt_LoginCheckQC2.WaitOne(0)) { try{ if (networkmain.CheckServerConnectionWithMiddlwareForQC2(UserName2) == false) { StationStarStopLog.Info("Connection String not Match With Middleware,OP2 Logout " + UserName2); networkmain.linePack.Info("Connection String not Match With Middleware,OP2 Logout " + UserName2); networkmain.Client_SendQCStationLogout("2", networkmain.QC2LoginConnectionCheck); networkmain.QC2LogOutSendReady = true; UserName2 = ""; PLCWriteCommand6[PLCWriteCmdOP02LoginLogout] = 0x00; } networkmain.MiddlewareToIGTEvt_LoginCheckQC2.Reset(); } catch { } } #endregion //Station 06 Login/Logout server exchange #region Station06OPLoginLogout //check if there is any incoming messages for login if (networkmain.MiddlewareToIGTEvt_Login.WaitOne(0)) { //process incoming messages //Display on Station # //Get username and StationID //XmlNodeList list = networkmain.QCLogin.SelectNodes("MESSAGE/BODY/STATION_ID"); XmlNode list = networkmain.QCLogin.SelectSingleNode("MESSAGE/BODY/STATION_ID"); string StationID = list.InnerText; //string StationID = list.Item(0).ToString(); XmlNode list1 = networkmain.QCLogin.SelectSingleNode("MESSAGE/BODY/USER_NAME"); String UserName = list1.InnerText; if (StationID == "1") { UserName1 = UserName; StationID1 = StationID; //reset PLC request event PLCWriteCommand6[PLCWriteCmdOP01LoginLogout] = 0x08;// send request complete DM5200 networkmain.MiddlewareToIGTEvt_Login.Reset(); } else if (StationID == "2") { UserName2 = UserName; StationID2 = StationID; networkmain.QC2Data = UserName; //reset PLC request event PLCWriteCommand6[PLCWriteCmdOP02LoginLogout] = 0x08;// send request complete DM5201 networkmain.MiddlewareToIGTEvt_Login.Reset(); } } switch (Operator01LoginState) { case WaitForOperatorLogin: if ((PLCQueryRx6[PLCQueryRx_DM5100] == 0x08) && (PLCWriteCommand6[PLCWriteCommand_DM5200] == 0x08)) //request finishing label { //log6.Info("Operator 1 Login request "+StationID1+","+UserName1); networkmain.linePack.Info("Operator 1 Login request " + StationID1 + "," + UserName1); networkmain.Client_SendQCStationLogin(StationID1, UserName1); networkmain.QC1LogOutSendReady = false; networkmain.QC1Data = UserName1; Operator01LoginState = WaitForOperatorLogout; } if ((PLCQueryRx6[PLCQueryRx_DM5100] == 0x0F) && (PLCWriteCommand6[PLCWriteCommand_DM5200] == 0x08)) //timeout { networkmain.QC1Data = UserName1; // log6.Info("Operator 1 login 3 mins timeout "+StationID1+","+UserName1); networkmain.linePack.Info("Operator 1 login 3 mins timeout " + StationID1 + "," + UserName1); networkmain.Client_SendQCStationLogout(StationID1, UserName1); networkmain.QC1LogOutSendReady = false; networkmain.QC1Data = ""; UserName1 = ""; POcount1 = 0; PLCWriteCommand6[PLCWriteCommand_DM5200] = 0x00; Operator01LoginState = WaitForOperatorLogin; } break; case WaitForOperatorLogout: if ((PLCQueryRx6[PLCQueryRx_DM5100] == 0xF) && (PLCWriteCommand6[PLCWriteCommand_DM5200] == 0x08)) { // send middleware operator1 logout PLCWriteCommand6[PLCWriteCommand_DM5200] = 0x00; networkmain.Client_SendQCStationLogout(StationID1, UserName1); networkmain.QC1LogOutSendReady = true; POcount1 = 0; // log6.Info("Operator 1 Logout request "+StationID1+","+UserName1); networkmain.linePack.Info("Operator 1 Logout request " + StationID1 + "," + UserName1); networkmain.QC1Data = ""; UserName1 = ""; Operator01LoginState = WaitForOperatorLogin; } break; } switch (Operator02LoginState) { case WaitForOperatorLogin: if ((PLCQueryRx6[PLCQueryRx_DM5100 + 2] == 0x08) && (PLCWriteCommand6[PLCWriteCommand_DM5200 + 2] == 0x08)) //request finishing label { // log6_1.Info("Operator 2 Login request "+StationID2+","+UserName2); networkmain.linePack.Info("Operator 2 Login request " + StationID2 + "," + UserName2); networkmain.Client_SendQCStationLogin(StationID2, UserName2); networkmain.QC2LogOutSendReady = false; networkmain.QC2Data = UserName2; Operator02LoginState = WaitForOperatorLogout; } if ((PLCQueryRx6[PLCQueryRx_DM5100 + 2] == 0x0F) && (PLCWriteCommand6[PLCWriteCommand_DM5200 + 2] == 0x08)) //timeout { networkmain.QC2Data = UserName2; // log6_1.Info("Operator 2 login 3 mins timeout "+StationID2+","+UserName2); networkmain.linePack.Info("Operator 2 login 3 mins timeout " + StationID2 + "," + UserName2); networkmain.Client_SendQCStationLogout(StationID2, UserName2); networkmain.QC2LogOutSendReady = false; networkmain.QC2Data = ""; UserName2 = ""; POcount2 = 0; PLCWriteCommand6[PLCWriteCommand_DM5200 + 2] = 0x00; Operator02LoginState = WaitForOperatorLogin; } break; case WaitForOperatorLogout: if ((PLCQueryRx6[PLCQueryRx_DM5100 + 2] == 0xF) && (PLCWriteCommand6[PLCWriteCommand_DM5200 + 2] == 0x08)) { // send middleware operator1 logout PLCWriteCommand6[PLCWriteCommand_DM5200 + 2] = 0x00; networkmain.Client_SendQCStationLogout(StationID2, UserName2); networkmain.QC2LogOutSendReady = true; POcount2 = 0; // log6_1.Info("Operator 2 Logout request "+StationID2+","+UserName2); networkmain.linePack.Info("Operator 2 Logout request " + StationID2 + "," + UserName2); UserName2 = ""; networkmain.QC2Data = ""; // UserName2=""; Operator02LoginState = WaitForOperatorLogin; } break; } #endregion if (evt_FG01_FG02Move.WaitOne(0)) { networkmain.Client_sendFG01_FG02_MOVE1(st8FINISH, "FG01_FG02_MOVE"); networkmain.Client_sendFG01_FG02_MOVE(st8FINISH, "FG01_FG02_MOVE"); evt_FG01_FG02Move.Reset(); evt_FG01_FG02Move_Rx.Set(); } } catch (Exception ex) { log.Error(ex.ToString()); } }// }