ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Sending commands in queue to equipment Example source
    IT Story/C# & WPF 2022. 7. 3. 17:37
    반응형
    void threadEquipmentProcess()
            {
                string sData = string.Empty;
                string[] sArrEvent;
                do
                {
                    lock (this.SyncRoot)
                    {
                        try
                        {
                            try
                            {
                                s_EQPEventProcess(); //설비로부터 Event 처리
                                s_BitTimeOutCheck();
    
                                if (this.m_Info.funGetPLCCommandCount() > 0)
                                {
                                    sData = this.m_Info.funGetPLCCommand().ToString();
                                    sArrEvent = sData.Split(new char[] { ',' });
    
                                    switch (Convert.ToInt32(sArrEvent[0]))
                                    {
                                        case (int)Structure.classStructure.PLCCommand.HOSTConnected:
                                            this.s_SendHostConnect(Convert.ToBoolean(sArrEvent[1]));
                                            break;
    
                                        case (int)Structure.classStructure.PLCCommand.CellSizeWrite:
                                            this.s_CellSizeWirte(sArrEvent[1], sArrEvent[2]);
                                            break;
    
                                        case (int)Structure.classStructure.PLCCommand.DateandTimeSetting:
                                            this.s_SendCurrentTime(sArrEvent[1]);
                                            break;
    
                                        case (int)Structure.classStructure.PLCCommand.ControlState:
                                            this.s_SendHostOnlineMode(sArrEvent[1]);
                                            break;
    
                                        case (int)Structure.classStructure.PLCCommand.OPCall:
                                            this.s_WriteHostMsg(sArrEvent[1], true);
                                            break;
    
                                        case (int)Structure.classStructure.PLCCommand.HostMsg:
                                            this.s_WriteHostMsg(sArrEvent[1], false);
                                            break;
                                            
                                        case (int)Structure.classStructure.PLCCommand.BuzzerOn:
                                            this.s_SendBuzzerOn();
                                            break;
    
                                        case (int)Structure.classStructure.PLCCommand.BuzzerOff:
                                            this.s_SendBuzzerOff();
                                            break;
    
                                            // Printer Label을 재출력 한다.
                                        case (int)Structure.classStructure.PLCCommand.RePrinter:
                                            EnuCommon.PrinterErrCode enuReturn = this.m_Label.SendLabeData(sArrEvent[1]);
                                            if (enuReturn != EnuCommon.PrinterErrCode.NoError)
                                                this.m_Info.Set_Log(EnuCommon.LogType.CIM, "Printer Send Label Data Error : " + enuReturn.ToString());
                                            break;
    
    
                                        case (int)Structure.classStructure.PLCCommand.TestPrinter:
                                            s_PortStatusChange(sArrEvent[1]);
                                            break;
                                     
                                        default:
                                            break;
                                    }
                                }
                                Thread.Sleep(20);
                            }
                            catch (Exception ex)
                            {
                                this.m_Info.Set_Log(Common.EnuCommon.LogType.CIM, ex.ToString());
                            }
                        }
                        catch { }
                    }
                } while (true);
            }
    반응형

    댓글

Designed by Tistory.