/// <summary> /// Primary Message에 대해 처리한 후 Secondary Message를 Biuld하여 Driver에 전송한다. /// </summary> /// <param name="msgTran">Primary Message의 Transaction</param> public void funPrimaryReceive(Transaction msgTran) { List <MultiUseDataBody> dListReceiveData = new List <MultiUseDataBody>(); //List<List<string>> dListBodyOfType = new List<List<string>>(); ACK ack = ACK.OK; try { if (this.pInfo.All.HostConnect == false) { return; } #region ModuleID Check string dstrModuleID = msgTran.Primary().Item("MODULEID").Getvalue().ToString().Trim(); if (!dstrModuleID.Equals(this.pInfo.Unit(3).SubUnit(0).ModuleID)) // 모듈아이디 나크 { msgTran.Secondary().Item("L2").Putvalue(0); msgTran.Secondary().Item("ACK").Putvalue((int)ACK.ModuleID_msMatch); funSendReply(msgTran); return; } #endregion int dintTypeCount = Convert.ToInt32(msgTran.Primary().Item("L2").Getvalue()); // 타입 카운트 #region 장비 전체 리스트 조회 시 if (dintTypeCount == 0) // 모두 조회 { foreach (string dstrTYPE in this.pInfo.Unit(0).SubUnit(0).MultiData.TYPES()) { foreach (string dstrITEM in this.pInfo.Unit(0).SubUnit(0).MultiData.TYPES(dstrTYPE).ITEMS()) { dListReceiveData.Add(new MultiUseDataBody(dstrTYPE, dstrITEM)); } } //dListReceiveData.Add(new MultiUseDataBody("MCC", "MCC_BASIC_PATH")); //dListReceiveData.Add(new MultiUseDataBody("MCC", "MCC_SAMPLING_TIME")); //dListReceiveData.Add(new MultiUseDataBody("MCC", "MCC_HOST_IP")); //dListReceiveData.Add(new MultiUseDataBody("MCC", "MCC_LOGIN_ID")); //dListReceiveData.Add(new MultiUseDataBody("MCC", "MCC_LOGIN_PW")); } #endregion #region 일부 타입 리스트 조회시 else // n 개 조회 { for (int i = 0; i < dintTypeCount; i++) { string dstrType = msgTran.Primary().Item("DATA_TYPE" + i.ToString()).Getvalue().ToString().Trim(); InfoAct.clsMultiUseDataByTYPE clsTYPE = this.pInfo.Unit(0).SubUnit(0).MultiData.TYPES(dstrType); if (clsTYPE != null) { int dintBodyCount = int.Parse(msgTran.Primary().Item("L4" + i.ToString()).Getvalue().ToString().Trim()); if (dintBodyCount == 0) { foreach (string dstrITEM in this.pInfo.Unit(0).SubUnit(0).MultiData.TYPES(dstrType).ITEMS()) { dListReceiveData.Add(new MultiUseDataBody(dstrType, dstrITEM)); } //dListReceiveData.Add(new MultiUseDataBody("MCC", "MCC_BASIC_PATH")); //dListReceiveData.Add(new MultiUseDataBody("MCC", "MCC_SAMPLING_TIME")); //dListReceiveData.Add(new MultiUseDataBody("MCC", "MCC_HOST_IP")); //dListReceiveData.Add(new MultiUseDataBody("MCC", "MCC_LOGIN_ID")); //dListReceiveData.Add(new MultiUseDataBody("MCC", "MCC_LOGIN_PW")); } else // n 의 n 개 조회 { for (int j = 0; j < dintBodyCount; j++) { //string dstrBodyName = msgTran.Primary().Item("ITEM_NAME" + i.ToString()).Getvalue().ToString().Trim(); string dstrBodyName = msgTran.Primary().Item("ITEM_NAME" + i.ToString() + j.ToString()).Getvalue().ToString().Trim(); dListReceiveData.Add(new MultiUseDataBody(dstrType, dstrBodyName)); if (!clsTYPE.ItemContains(dstrBodyName)) { ack = ACK.At_least_One_data_invalid; break; } //switch (dstrBodyName) //{ // case "MCC_BASIC_PATH": // dListReceiveData.Add(new MultiUseDataBody("MCC", "MCC_BASIC_PATH")); // break; // case "MCC_SAMPLING_TIME": // dListReceiveData.Add(new MultiUseDataBody("MCC", "MCC_SAMPLING_TIME")); // break; // case "MCC_HOST_IP": // dListReceiveData.Add(new MultiUseDataBody("MCC", "MCC_HOST_IP")); // break; // case "MCC_LOGIN_ID": // dListReceiveData.Add(new MultiUseDataBody("MCC", "MCC_LOGIN_ID")); // break; // case "MCC_LOGIN_PW": // dListReceiveData.Add(new MultiUseDataBody("MCC", "MCC_LOGIN_PW")); // break; // default: // ack = ACK.At_least_One_data_invalid; // 지정된 네임이 아니면 나크 // break; //} } } } else // 타입이 MCC가 아니면 나크 { ack = ACK.At_least_One_data_invalid; break; } } } #endregion if (ack == ACK.At_least_One_data_invalid) { msgTran.Secondary().Item("L2").Putvalue(0); msgTran.Secondary().Item("ACK").Putvalue((int)ack); } else if (ack == ACK.OK) { #region MultiUseData Read this.pInfo.subPLCCommand_Set(InfoAct.clsInfo.PLCCommand.Msg2MCC, "GET"); subWaitDuring(1); #endregion #region ITEM Setting msgTran.Secondary().Item("L2").Putvalue(dListReceiveData.Count); msgTran.Secondary().Item("ACK").Putvalue((int)ack); for (int i = 0; i < dListReceiveData.Count; i++) { InfoAct.clsMultiUseDataByITEM clsITEM = this.pInfo.Unit(0).SubUnit(0).MultiData.TYPES(dListReceiveData[i].type).ITEMS(dListReceiveData[i].name); if (clsITEM != null) { msgTran.Secondary().Item("DATA_TYPE" + i.ToString()).Putvalue(clsITEM.DATA_TYPE); msgTran.Secondary().Item("ITEM_NAME" + i.ToString()).Putvalue(clsITEM.ITEM); msgTran.Secondary().Item("ITEM_VALUE" + i.ToString()).Putvalue(clsITEM.VALUE); msgTran.Secondary().Item("REFERENCE" + i.ToString()).Putvalue(clsITEM.REFERENCE); } else { msgTran.Secondary().Item("L2").Putvalue(0); msgTran.Secondary().Item("ACK").Putvalue((int)ack); } //switch (dListReceiveData[i].name) //{ // case "MCC_BASIC_PATH": // msgTran.Secondary().Item("DATA_TYPE" + i.ToString()).Putvalue(dListReceiveData[i].type); // msgTran.Secondary().Item("ITEM_NAME" + i.ToString()).Putvalue(dListReceiveData[i].name); // msgTran.Secondary().Item("ITEM_VALUE" + i.ToString()).Putvalue(pInfo.All.MCCNetworkBasicPath); // msgTran.Secondary().Item("REFERENCE" + i.ToString()).Putvalue("PATH"); // break; // case "MCC_HOST_IP": // msgTran.Secondary().Item("DATA_TYPE" + i.ToString()).Putvalue(dListReceiveData[i].type); // msgTran.Secondary().Item("ITEM_NAME" + i.ToString()).Putvalue(dListReceiveData[i].name); // msgTran.Secondary().Item("ITEM_VALUE" + i.ToString()).Putvalue(pInfo.All.MCCNetworkPath); // msgTran.Secondary().Item("REFERENCE" + i.ToString()).Putvalue("IP"); // break; // case "MCC_LOGIN_ID": // msgTran.Secondary().Item("DATA_TYPE" + i.ToString()).Putvalue(dListReceiveData[i].type); // msgTran.Secondary().Item("ITEM_NAME" + i.ToString()).Putvalue(dListReceiveData[i].name); // msgTran.Secondary().Item("ITEM_VALUE" + i.ToString()).Putvalue(pInfo.All.MCCNetworkUserID); // msgTran.Secondary().Item("REFERENCE" + i.ToString()).Putvalue("ID"); // break; // case "MCC_LOGIN_PW": // msgTran.Secondary().Item("DATA_TYPE" + i.ToString()).Putvalue(dListReceiveData[i].type); // msgTran.Secondary().Item("ITEM_NAME" + i.ToString()).Putvalue(dListReceiveData[i].name); // msgTran.Secondary().Item("ITEM_VALUE" + i.ToString()).Putvalue(pInfo.All.MCCNetworkPassword); // msgTran.Secondary().Item("REFERENCE" + i.ToString()).Putvalue("PW"); // break; // case "MCC_SAMPLING_TIME": // msgTran.Secondary().Item("DATA_TYPE" + i.ToString()).Putvalue(dListReceiveData[i].type); // msgTran.Secondary().Item("ITEM_NAME" + i.ToString()).Putvalue(dListReceiveData[i].name); // msgTran.Secondary().Item("ITEM_VALUE" + i.ToString()).Putvalue(pInfo.All.MCCFileUploadTime); // msgTran.Secondary().Item("REFERENCE" + i.ToString()).Putvalue("MINUTE"); // break; //} } #endregion } funSendReply(msgTran); return; } catch (Exception ex) { this.pInfo.subLog_Set(InfoAct.clsInfo.LogType.CIM, ex.ToString()); } }