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); } } }
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)); } }