protected virtual void S1F3ReceiveSelectedEquipmentStatusRequest(object sender, SECSEventArgs e) { try { S1F3 s1f3 = ((S1F3)e.secsHandler.Parse <S1F3>(e)); SCUtility.secsActionRecordMsg(scApp, true, s1f3); int count = s1f3.SVID.Count(); S1F4 s1f4 = new S1F4(); s1f4.SECSAgentName = scApp.EAPSecsAgentName; s1f4.SystemByte = s1f3.SystemByte; s1f4.SV = new SXFY[count]; for (int i = 0; i < count; i++) { if (s1f3.SVID[i] == SECSConst.VID_AlarmsSet) { //TODO Set Alarm List s1f4.SV[i] = new S6F11.RPTINFO.RPTITEM.VIDITEM_04(); } else if (s1f3.SVID[i] == SECSConst.VID_ControlState) { string control_state = SCAppConstants.LineHostControlState.convert2MES(line.Host_Control_State); s1f4.SV[i] = new S6F11.RPTINFO.RPTITEM.VIDITEM_06() { CONTROLSTATE = control_state }; } else if (s1f3.SVID[i] == SECSConst.VID_ActiveVehicles) { List <AVEHICLE> vhs = scApp.getEQObjCacheManager().getAllVehicle(); int vhs_count = vhs.Count; S6F11.RPTINFO.RPTITEM.VIDITEM_71[] VEHICLEINFOs = new S6F11.RPTINFO.RPTITEM.VIDITEM_71[vhs_count]; for (int j = 0; j < vhs_count; j++) { VEHICLEINFOs[j] = new S6F11.RPTINFO.RPTITEM.VIDITEM_71() { VHINFO = new S6F11.RPTINFO.RPTITEM.VIDITEM_71.VEHICLEINFO() { VEHICLE_ID = vhs[j].VEHICLE_ID, VEHICLE_STATE = "2" } }; } s1f4.SV[i] = new S6F11.RPTINFO.RPTITEM.VIDITEM_53() { VEHICLEINFO = VEHICLEINFOs }; } else if (s1f3.SVID[i] == SECSConst.VID_SCState) { //string sc_state = SCAppConstants.LineSCState.convert2MES(line.SCStats); //s1f4.SV[i] = new S6F11.RPTINFO.RPTITEM.VIDITEM_73() //{ // SCSTATE = sc_state //}; } else if (s1f3.SVID[i] == SECSConst.VID_EnhancedTransfers) { List <ACMD_MCS> mcs_cmds = scApp.CMDBLL.loadACMD_MCSIsUnfinished(); int cmd_count = mcs_cmds.Count; S6F11.RPTINFO.RPTITEM.VIDITEM_13[] EnhancedTransferCmds = new S6F11.RPTINFO.RPTITEM.VIDITEM_13[cmd_count]; for (int k = 0; k < cmd_count; k++) { ACMD_MCS mcs_cmd = mcs_cmds[k]; string transfer_state = SCAppConstants.TransferState.convert2MES(mcs_cmd.TRANSFERSTATE); EnhancedTransferCmds[k] = new S6F11.RPTINFO.RPTITEM.VIDITEM_13(); EnhancedTransferCmds[k].TRANSFER_STATE.TRANSFER_STATE = transfer_state; EnhancedTransferCmds[k].COMMAND_INFO.COMMAND_ID.COMMAND_ID = mcs_cmd.CMD_ID; EnhancedTransferCmds[k].COMMAND_INFO.PRIORITY.PRIORITY = mcs_cmd.PRIORITY.ToString(); EnhancedTransferCmds[k].TRANSFER_INFO.CARRIER_ID = mcs_cmd.CARRIER_ID; EnhancedTransferCmds[k].TRANSFER_INFO.SOURCE_PORT = mcs_cmd.HOSTSOURCE; EnhancedTransferCmds[k].TRANSFER_INFO.DESTINATION_PORT = mcs_cmd.HOSTDESTINATION; } s1f4.SV[i] = new S6F11.RPTINFO.RPTITEM.VIDITEM_76() { EnhancedTransferCmd = EnhancedTransferCmds }; } else if (s1f3.SVID[i] == SECSConst.VID_Spec_Version) { s1f4.SV[i] = new S6F11.RPTINFO.RPTITEM.VIDITEM_114() { SPEC_VERSION = string.Empty // TODO fill in }; } else if (s1f3.SVID[i] == SECSConst.VID_Enhanced_Carriers) { List <AVEHICLE> has_carry_vhs = scApp.getEQObjCacheManager().getAllVehicle().Where(vh => vh.HAS_CST == 1).ToList(); int carry_vhs_count = has_carry_vhs.Count; S6F11.RPTINFO.RPTITEM.VIDITEM_10[] carrier_info = new S6F11.RPTINFO.RPTITEM.VIDITEM_10[carry_vhs_count]; for (int j = 0; j < carry_vhs_count; j++) { carrier_info[j] = new S6F11.RPTINFO.RPTITEM.VIDITEM_10(); carrier_info[j].CARRIER_ID_OBJ.CARRIER_ID = has_carry_vhs[j].CST_ID.Trim(); carrier_info[j].CARRIER_LOC_OBJ.CARRIER_LOC = has_carry_vhs[j].VEHICLE_ID; carrier_info[j].INSTALL_TIME_OBJ.INSTALLTIME = string.Empty; //TODO 要填入進入的時間 carrier_info[j].CARRIER_ZONE_NAME = string.Empty; carrier_info[j].CARRIER_STATE = string.Empty; } s1f4.SV[i] = new S6F11.RPTINFO.RPTITEM.VIDITEM_51() { ENHANCED_CARRIER_INFO = carrier_info }; } else if (s1f3.SVID[i] == SECSConst.VID_Current_Port_States) { List <APORTSTATION> port_station = scApp.MapBLL.loadAllPort(); int port_count = port_station.Count; var vid_118 = new S6F11.RPTINFO.RPTITEM.VIDITEM_118(); vid_118.PORT_INFO = new S6F11.RPTINFO.RPTITEM.VIDITEM_354[port_count]; for (int j = 0; j < port_count; j++) { vid_118.PORT_INFO[j] = new S6F11.RPTINFO.RPTITEM.VIDITEM_354(); vid_118.PORT_INFO[j].PORT_ID.PORT_ID = port_station[j].PORT_ID; vid_118.PORT_INFO[j].PORT_TRANSFTER_STATE.PORT_TRANSFER_STATE = ((int)port_station[j].PORT_STATUS).ToString(); } s1f4.SV[i] = vid_118; } else { s1f4.SV[i] = new S6F11.RPTINFO.RPTITEM.VIDITEM_04(); } } TrxSECS.ReturnCode rtnCode = ISECSControl.replySECS(bcfApp, s1f4); SCUtility.secsActionRecordMsg(scApp, false, s1f4); } catch (Exception ex) { logger.Error("MESDefaultMapAction has Error[Line Name:{0}],[Error method:{1}],[Error Message:{2}", line.LINE_ID, "S1F3_Receive_Eqpt_Stat_Req", ex.ToString()); } }
public override bool QueryProcessAndControlState(out Globals.ControlState newControlState, out Globals.ProcessState newProcessState) { //TODO - look at evatec example - this could possible be moved to Tool.cs newControlState = new ControlState(ControlStates.UNDEFINED, "Undefined"); newProcessState = new ProcessState(ProcessStates.UNDEFINED, "Undefined"); S1F3 s1f3 = new S1F3(CurrentToolConfig.Toolid); s1f3.addSVID(CurrentToolConfig.ControlStateSVID.ToString(), DataType.U4, "ControlStateSVID"); s1f3.addSVID(CurrentToolConfig.ProcessStateSVID.ToString(), DataType.U4, "ProcessStateSVID"); try { MyLog.Information("Sending tool status query for SVID " + CurrentToolConfig.ControlStateSVID + ", " + CurrentToolConfig.ProcessStateSVID); s1f3.send(EqSrv, CurrentToolConfig.CommunicationTimeout); int controlState; int processState; if (s1f3.SV.Count != 2) { MyLog.Warning("Status query response did not include expected values."); return(false); } if (s1f3.SV[0].Type == DataType.L) { MyLog.Warning("The configured SVID '" + CurrentToolConfig.ControlStateSVID + "' for Control State is not recognized by the tool"); return(false); } else { controlState = Int32.Parse(s1f3.SV[0].Value); } if (s1f3.SV[1].Type == DataType.L) { MyLog.Warning("The configured SVID '" + CurrentToolConfig.ProcessStateSVID + "' for Process State is not recognized by the tool"); return(false); } else { processState = Int32.Parse(s1f3.SV[1].Value); } if (ControlStateDict.ContainsKey(controlState)) { newControlState = ControlStateDict[controlState]; if (newControlState.State != currentControlState) { Messenger.Default.Send(new ControlStateChangeMessage(newControlState.State, newControlState.Description)); MyLog.Debug("Control State changed to " + newControlState.Description); currentControlState = newControlState.State; } } else { MyLog.Warning("Control State changed to undefined state " + controlState); currentControlState = ControlStates.UNDEFINED; } if (ProcessStateDict.ContainsKey(processState)) { newProcessState = ProcessStateDict[processState]; if (newProcessState.State != currentProcessState) { Messenger.Default.Send(new ProcessStateChangeMessage(newProcessState.State, newProcessState.Description)); currentProcessState = newProcessState.State; } } else { MyLog.Warning("Process State changed to undefined state " + processState); currentProcessState = ProcessStates.UNDEFINED; } MyLog.Debug("Status query returned Control State '" + controlState + "' Process State '" + processState + "'"); return(true); } catch (BoundMessageTimeoutException) { MyLog.Warning("Tool status query (S1F3) timed out."); } catch (BoundMessageSendException e) { MyLog.Warning("Tool status query (S1F3) failed - " + e.Message); } catch (Exception e) { MyLog.Warning("Unexpected error in tool status query (S1F3); " + e.Message); } return(false); }