コード例 #1
0
        void _drvIPS_OnRecieveMessage(String message)
        {
            if (String.IsNullOrEmpty(message) == false)
            {
                IpsTelegram.IPSResult result = new IpsTelegram.IPSResult(message);

                if (OnIPSResult != null && result.DataType == IpsTelegram.IPSDataType.Data)
                {
                    OnIPSResult(result);
                }
            }
        }
コード例 #2
0
        void IPS_OnIPSResult(IpsTelegram.IPSResult Result)
        {
            try
            {
                CSorterItemData itemData;

                lock (lockObj)
                {
                    itemData = new CSorterItemData()  // 최초 Pid 및 데이터를 생성하여  Dictionary에 담는다.
                    {
                        inductedTime = DateTime.Now.ToString(CConstant.DATEFORMAT + CConstant.TIMEFORMAT),
                        eqpId        = __EQP_ID.AsString,
                        pid          = CUtil.GetShortNumber(Result.parcelID),
                    };

                    itemData.ipsData = Result.IPSData;

                    itemDataMgr.OldDataProcess(itemData.pid);
                    itemDataMgr.Add(itemData, itemData.pid);
                }

                SystemLogger.Log(Level.Info, String.Format("<IPS_READ> INPUT VALUES [UK={0}] [PID={1}][IPS={2}]",
                                                           itemData.inductedTime, itemData.pid, itemData.ipsData), systemLogNm);

                System.Threading.ThreadPool.QueueUserWorkItem(delegate
                {
                    if (itemData.pid != 0)
                    {
                        string[] scanResult = new string[5];

                        scanResult = WcsIPS_OnIPSResult(itemData);  // Procedure를 호출하여 목적지를 받는다.

                        if (scanResult != null && scanResult[0] != null && scanResult[0] != "null")
                        {
                            itemData.Ldestination[0] = CUtil.GetShortNumber(scanResult[0]);
                            itemData.Ldestination[1] = CUtil.GetShortNumber(scanResult[1]);
                            itemData.Ldestination[2] = CUtil.GetShortNumber(scanResult[2]);
                        }

                        SystemLogger.Log(Level.Debug, String.Format("<IPS_PROC_READ> [UK={0}] [PID={1}][IPS={2}]  PROC_CALL= [CHUTE={3}][RTN={4}] [ERR={5}]",
                                                                    itemData.inductedTime, itemData.pid, itemData.ipsData, itemData.Ldestination[0] + ";" + itemData.Ldestination[1] + ";" + itemData.Ldestination[2], scanResult == null ? "null" : scanResult[3], scanResult == null ? "null" : scanResult[4]),
                                         systemLogNm);
                    }
                    else
                    {
                        SystemLogger.Log(Level.Info, String.Format("<PID is Zero. Destination Don't Send>"));
                        itemData.destination1 = CUtil.GetShortNumber(CConstant.PROCEDURE_RESULT.REWORK);
                    }

                    WheelSorterTelegram.DestinationSend send = new WheelSorterTelegram.DestinationSend()  //Telegram에 담는다.
                    {
                        ParcelID    = itemData.pid,
                        Destination = itemData.Ldestination,
                    };
                    drvSocket.SendData(send.MakePacket(EQP_ID), sorterDestinationSendPort);  //Socket 전송
                    SystemLogger.Log(Level.Debug, String.Format("<Destination Send OK> [PID={0}][CHUTE={1}]",
                                                                send.ParcelID, send.Destination[0] + ";" + send.Destination[1] + ";" + send.Destination[2]));
                });
            }
            catch (Exception ex)
            {
                SystemLogger.Log(Level.Exception, string.Format("[{0}]{1} : {2}", this.Name, ex.StackTrace, ex.Message));
            }
        }