private void AliveMTL() { if (System.Threading.Interlocked.Exchange(ref syncMTLPoint, 1) == 0) { try { ValueWrite isAliveIndexVW = scApp.getBCFApplication().getWriteValueEvent(SCAppConstants.EQPT_OBJECT_CATE_EQPT, "MTL", "OHXC_TO_MTL_ALIVE_INDEX"); if (isAliveIndexVW == null) { return; } UInt16 isAliveIndex = (UInt16)isAliveIndexVW.getText(); int x = isAliveIndex + 1; if (x > 9999) { x = 1; } isAliveIndexVW.setWriteValue((UInt16)x); ISMControl.writeDeviceBlock(scApp.getBCFApplication(), isAliveIndexVW); } catch (Exception e) { } finally { System.Threading.Interlocked.Exchange(ref syncMTLPoint, 0); } } }
public virtual void OHxC2MTL_CarOutInterface(bool carOutInterlock, bool carOutReady, bool carMoving, bool carMoveComplete) { try { ValueWrite vm_carOutInterlock = bcfApp.getWriteValueEvent(eqpt.EqptObjectCate, eqpt.EQPT_ID, "OHXC_TO_MTL_U2D_CAR_OUT_INTERLOCK"); ValueWrite vm_carOutReady = bcfApp.getWriteValueEvent(eqpt.EqptObjectCate, eqpt.EQPT_ID, "OHXC_TO_MTL_U2D_CAR_OUT_READY"); ValueWrite vm_carMoving = bcfApp.getWriteValueEvent(eqpt.EqptObjectCate, eqpt.EQPT_ID, "OHXC_TO_MTL_U2D_CAR_MOVING"); ValueWrite vm_carMoveCmp = bcfApp.getWriteValueEvent(eqpt.EqptObjectCate, eqpt.EQPT_ID, "OHXC_TO_MTL_U2D_CAR_MOVE_COMPLETE"); string setValue = carOutInterlock ? "1" : "0"; vm_carOutInterlock.setWriteValue(carOutInterlock ? "1" : "0"); vm_carOutReady.setWriteValue(carOutReady ? "1" : "0"); vm_carMoving.setWriteValue(carMoving ? "1" : "0"); vm_carMoveCmp.setWriteValue(carMoveComplete ? "1" : "0"); bool result = ISMControl.writeDeviceBlock(bcfApp, vm_carOutInterlock); ISMControl.writeDeviceBlock(bcfApp, vm_carOutReady); ISMControl.writeDeviceBlock(bcfApp, vm_carMoving); ISMControl.writeDeviceBlock(bcfApp, vm_carMoveCmp); if (result) { eqpt.Interlock = setValue == "1" ? true : false; } } catch (Exception ex) { logger.Error(ex, "Exception"); } }
public ValueWrite getValueWriteHandshake(BCFApplication bcfApp, string eqObjIDCate, string eq_id) { ValueWrite vw = null; vw = bcfApp.getWriteValueEvent(eqObjIDCate, eq_id, HandshakePropName); return(vw); }
private void Write(BCFApplication bcfApp, string eqObjIDCate, string eq_id, out ValueWrite vw_handshake) { vw_handshake = null; EQ_ID = eq_id; List <ValueWrite> listVW = new List <ValueWrite>(); foreach (FieldInfo info in fieldInfos) { PLCElement element = getPLCElementAttr(info); string value = string.Empty; UInt16[] ivalueArray = null; object valueObj = info.GetValue(this); if (valueObj is Enum) { value = ((int)valueObj).ToString(); } else if (valueObj is bool) { value = ((bool)valueObj) ? "1" : "0"; } else if (valueObj is UInt16[]) { ivalueArray = valueObj as UInt16[]; } else { object obj = info.GetValue(this); if (obj != null) { value = info.GetValue(this).ToString(); } } ValueWrite vw = null; vw = bcfApp.getWriteValueEvent(eqObjIDCate, eq_id, element.ValueName); if (valueObj is UInt16[]) { vw.setWriteValue(ivalueArray); } else { vw.setWriteValue(value); } if (element.IsHandshakeProp || element.IsIndexProp) { vw_handshake = vw; } else { ISMControl.writeDeviceBlock(bcfApp, vw); } listVW.Add(vw); } if (listVW.Count > 0) { BCFUtility.writeEquipmentLog(eq_id, listVW); } }
public override bool setOHxC2MTL_CarOutInterlock(bool carOutInterlock) { try { ValueWrite vm_carOutInterlock = bcfApp.getWriteValueEvent(MTS.EqptObjectCate, MTS.EQPT_ID, "OHXC_TO_MTL_U2D_CAR_OUT_INTERLOCK"); string setValue = carOutInterlock ? "1" : "0"; vm_carOutInterlock.setWriteValue(setValue); bool result = ISMControl.writeDeviceBlock(bcfApp, vm_carOutInterlock); LogHelper.Log(logger: logger, LogLevel: LogLevel.Info, Class: nameof(MTSValueDefMapActionNewPH2), Device: SCAppConstants.DeviceName.DEVICE_NAME_MTx, Data: $"Set Car Out Intertlock:{carOutInterlock},result:{result}", XID: MTS.EQPT_ID); if (result) { eqpt.Interlock = setValue == "1" ? true : false; } MTS.CarOutInterlock = carOutInterlock; return(result); } catch (Exception ex) { logger.Error(ex, "Exception"); return(false); } }
public bool resetHandshake(BCFApplication bcfApp, string eqObjIDCate, string eq_id) { ValueWrite handshake_vw = getValueWriteHandshake(bcfApp, eqObjIDCate, eq_id); List <ValueWrite> vws = new List <ValueWrite>(); //A0.01 handshake_vw.initWriteValue(); vws.Add(handshake_vw); //A0.01 BCFUtility.writeEquipmentLog(eq_id, vws); //A0.01 return(ISMControl.writeDeviceBlock(bcfApp, handshake_vw)); }
public virtual void Write(BCFApplication bcfApp, string eqObjIDCate, string eq_id) { ValueWrite ve_handshake = null; Write(bcfApp, eqObjIDCate, eq_id, out ve_handshake); if (ve_handshake != null) { SpinWait.SpinUntil(() => false, 500); ISMControl.writeDeviceBlock(bcfApp, ve_handshake); } }
private void AliveToDevice(int syncIndex, string eqID, string writeName) { if (System.Threading.Interlocked.Exchange(ref syncPoint[syncIndex], 1) == 0) { bool isWriteSucess = false; try { ValueWrite isAliveIndexVW = scApp.getBCFApplication().getWriteValueEvent(SCAppConstants.EQPT_OBJECT_CATE_EQPT, eqID, writeName); if (isAliveIndexVW == null) { return; } UInt16 isAliveIndex = (UInt16)isAliveIndexVW.getText(); int x = isAliveIndex + 1; if (x > 9999) { x = 1; } isAliveIndexVW.setWriteValue((UInt16)x); ISMControl.writeDeviceBlock(scApp.getBCFApplication(), isAliveIndexVW); if (isWriteSucess || switchFlag) { isWriteSucess = false; switchFlag = false; isWriteSucess = ISMControl.writeDeviceBlock(scApp.getBCFApplication(), isAliveIndexVW); switchFlag = true; } else { switchFlag = false; isWriteSucess = false; } } catch (Exception e) { switchFlag = true; isWriteSucess = false; } finally { AEQPT eqpt = scApp.getEQObjCacheManager().getEquipmentByEQPTID(eqID); if (eqpt != null) { eqpt.Plc_Link_Stat = isWriteSucess ? SCAppConstants.LinkStatus.LinkOK : SCAppConstants.LinkStatus.LinkFail; } System.Threading.Interlocked.Exchange(ref syncPoint[syncIndex], 0); } } }
public virtual bool GetOHxC2MTL_CarInMoving() { try { ValueWrite vm_carMoving = bcfApp.getWriteValueEvent(eqpt.EqptObjectCate, eqpt.EQPT_ID, "OHXC_TO_MTL_D2U_CAR_MOVING"); return((Boolean)vm_carMoving.getText()); } catch (Exception ex) { logger.Error(ex, "Exception"); return(false); } }
public TrxMPLC.ReturnCode SendRecv(BCFApplication bcfApp, string eqObjIDCate, string eq_id, ValueRead replyMsg) { ValueWrite ve_handshake = null; Write(bcfApp, eqObjIDCate, eq_id, out ve_handshake); if (ve_handshake == null) { throw new NullReferenceException(); //TODO Log } SpinWait.SpinUntil(() => false, 1000); return(ISMControl.sendRecv(bcfApp, ve_handshake, replyMsg, 20)); //return TrxMPLC.ReturnCode.Normal; }
public virtual bool setOHxC2MTL_CarInMoving(bool carMoving) { try { ValueWrite vm_carMoving = bcfApp.getWriteValueEvent(eqpt.EqptObjectCate, eqpt.EQPT_ID, "OHXC_TO_MTL_D2U_CAR_MOVING"); vm_carMoving.setWriteValue(carMoving ? "1" : "0"); return(ISMControl.writeDeviceBlock(bcfApp, vm_carMoving)); } catch (Exception ex) { logger.Error(ex, "Exception"); return(false); } }
public virtual bool GetOHxC2MTL_CarOutInterlock() { try { ValueWrite vm_carOutInterlock = bcfApp.getWriteValueEvent(eqpt.EqptObjectCate, eqpt.EQPT_ID, "OHXC_TO_MTL_U2D_CAR_OUT_INTERLOCK"); eqpt.Interlock = (Boolean)vm_carOutInterlock.getText(); return((Boolean)vm_carOutInterlock.getText()); } catch (Exception ex) { logger.Error(ex, "Exception"); eqpt.Interlock = false; return(false); } }
/// <summary> /// Writes a string dictated by a format /// </summary> /// <param name="value">String to be written</param> /// <param name="type">Denotes what modifications to be made on the string before being written</param> public virtual void Write(string value, ValueWrite type) { if (type.HasFlag(ValueWrite.LeadingTabs)) { this.Writer.Write(ParadoxStreamWriter.tabs[value == "}" ? this.currentIndent - 1 : this.currentIndent]); } this.UpdateCurrentIndentFromIndentsIn(value); this.Writer.Write(type.HasFlag(ValueWrite.Quoted) ? '"' + value + '"' : value); if (type.HasFlag(ValueWrite.NewLine)) { this.Writer.WriteLine(); } }
public virtual void OHxC2MTL_CarInInterface(bool carMoving, bool carMoveComplete) { try { ValueWrite vm_carMoving = bcfApp.getWriteValueEvent(eqpt.EqptObjectCate, eqpt.EQPT_ID, "OHXC_TO_MTL_D2U_CAR_MOVING"); ValueWrite vm_carMoveCmp = bcfApp.getWriteValueEvent(eqpt.EqptObjectCate, eqpt.EQPT_ID, "OHXC_TO_MTL_D2U_CAR_MOVE_COMPLETE"); vm_carMoving.setWriteValue(carMoving ? "1" : "0"); vm_carMoveCmp.setWriteValue(carMoveComplete ? "1" : "0"); ISMControl.writeDeviceBlock(bcfApp, vm_carMoving); ISMControl.writeDeviceBlock(bcfApp, vm_carMoveCmp); } catch (Exception ex) { logger.Error(ex, "Exception"); } }
public override bool setOHxC2MTL_CarInMoving(bool carMoving) { try { ValueWrite vm_carMoving = bcfApp.getWriteValueEvent(MTS.EqptObjectCate, MTS.EQPT_ID, "OHXC_TO_MTL_D2U_CAR_MOVING"); vm_carMoving.setWriteValue(carMoving ? "1" : "0"); LogHelper.Log(logger: logger, LogLevel: LogLevel.Info, Class: nameof(MTLValueDefMapActionNew), Device: DEVICE_NAME_MTL, Data: $"Car In Moving:{carMoving}", VehicleID: MTS.EQPT_ID); return(ISMControl.writeDeviceBlock(bcfApp, vm_carMoving)); } catch (Exception ex) { logger.Error(ex, "Exception"); return(false); } }
public override void doProcess(object obj) { bool isWriteSucess = false; try { if (mCharger == null) { mCharger = scApp.getEQObjCacheManager().getEquipmentByEQPTID("MCharger"); } ValueWrite isAliveIndexVW = scApp.getBCFApplication().getWriteValueEvent(SCAppConstants.EQPT_OBJECT_CATE_EQPT, "MCharger", "AGVC_TO_CHARGER_ALIVE_INDEX"); if (isAliveIndexVW == null) { return; } UInt16 isAliveIndex = (UInt16)isAliveIndexVW.getText(); int x = isAliveIndex + 1; if (x > 9999) { x = 1; } isAliveIndexVW.setWriteValue((UInt16)x); if (isWriteSucess || switchFlag) { isWriteSucess = false; switchFlag = false; //isWriteSucess = smControl.writeDeviceBlock(isAliveIndexVW); isWriteSucess = ISMControl.writeDeviceBlock(scApp.getBCFApplication(), isAliveIndexVW); switchFlag = true; mCharger.AGVCAliveIndex = x; } else { switchFlag = false; isWriteSucess = false; } } catch (Exception e) { switchFlag = true; isWriteSucess = false; } }
public virtual bool setOHxC2MTL_CarInMoving(bool carMoving) { try { ValueWrite vm_carMoving = bcfApp.getWriteValueEvent(eqpt.EqptObjectCate, eqpt.EQPT_ID, "OHXC_TO_MTL_D2U_CAR_MOVING"); vm_carMoving.setWriteValue(carMoving ? "1" : "0"); bool result = ISMControl.writeDeviceBlock(bcfApp, vm_carMoving); LogHelper.Log(logger: logger, LogLevel: LogLevel.Info, Class: nameof(MTxValueDefMapActionBase), Device: SCAppConstants.DeviceName.DEVICE_NAME_MTx, Data: $"Set Car In Moving:{carMoving},result:{result}", XID: eqpt.EQPT_ID); return(result); } catch (Exception ex) { logger.Error(ex, "Exception"); return(false); } }
public virtual bool setOHxC2MTL_CarOutInterlock(bool carOutInterlock) { try { ValueWrite vm_carOutInterlock = bcfApp.getWriteValueEvent(eqpt.EqptObjectCate, eqpt.EQPT_ID, "OHXC_TO_MTL_U2D_CAR_OUT_INTERLOCK"); string setValue = carOutInterlock ? "1" : "0"; vm_carOutInterlock.setWriteValue(setValue); bool result = ISMControl.writeDeviceBlock(bcfApp, vm_carOutInterlock); if (result) { eqpt.Interlock = setValue == "1" ? true : false; } return(result); } catch (Exception ex) { logger.Error(ex, "Exception"); return(false); } }
private ValueWrite StripLeadingTabs(ValueWrite val) { return(val & ~ValueWrite.LeadingTabs); }
public virtual bool sendRoadControlCompleteNotify() { bool isSendSuccess = false; var send_function = scApp.getFunBaseObj <OHxCToOHVC_RoadControlCompleteNotify>(eqpt.EQPT_ID) as OHxCToOHVC_RoadControlCompleteNotify; var receive_function = scApp.getFunBaseObj <OHxCToOHVC_RoadControlCompleteNotifyReply>(eqpt.EQPT_ID) as OHxCToOHVC_RoadControlCompleteNotifyReply; ValueRead ReplyRoadControlCompleteNotifyVW = scApp.getBCFApplication().getReadValueEvent(SCAppConstants.EQPT_OBJECT_CATE_EQPT, eqpt.EQPT_ID, "REPLY_ROAD_CONTROL_COMPLETE_NOTIFY"); ValueWrite RoadControlCompleteNotifyVW = scApp.getBCFApplication().getWriteValueEvent(SCAppConstants.EQPT_OBJECT_CATE_EQPT, eqpt.EQPT_ID, "ROAD_CONTROL_COMPLETE_NOTIFY"); try { //1.準備要發送的資料 ValueRead vr_reply = receive_function.getValueReadHandshake (bcfApp, eqpt.EqptObjectCate, eqpt.EQPT_ID); //2.紀錄發送資料的Log send_function.Handshake = true; LogHelper.Log(logger: logger, LogLevel: LogLevel.Info, Class: nameof(OHCVValueDefMapAction), Device: DEVICE_NAME_OHCV, Data: send_function.ToString(), VehicleID: eqpt.EQPT_ID); //3.等待回復 TrxMPLC.ReturnCode on_returnCode = send_function.SendRecv(bcfApp, eqpt.EqptObjectCate, eqpt.EQPT_ID, vr_reply); //4.取得回復的結果 if (on_returnCode == TrxMPLC.ReturnCode.Normal) { receive_function.Read(bcfApp, eqpt.EqptObjectCate, eqpt.EQPT_ID); LogHelper.Log(logger: logger, LogLevel: LogLevel.Info, Class: nameof(OHCVValueDefMapAction), Device: DEVICE_NAME_OHCV, Data: receive_function.ToString(), VehicleID: eqpt.EQPT_ID); isSendSuccess = true; } else { isSendSuccess = false; } send_function.Handshake = false; //send_function.resetHandshake(bcfApp, eqpt.EqptObjectCate, eqpt.EQPT_ID); LogHelper.Log(logger: logger, LogLevel: LogLevel.Info, Class: nameof(OHCVValueDefMapAction), Device: DEVICE_NAME_OHCV, Data: send_function.ToString(), VehicleID: eqpt.EQPT_ID); if (isSendSuccess) { TrxMPLC.ReturnCode off_returnCode = send_function.SendRecv(bcfApp, eqpt.EqptObjectCate, eqpt.EQPT_ID, vr_reply); if (off_returnCode == TrxMPLC.ReturnCode.Normal) { receive_function.Read(bcfApp, eqpt.EqptObjectCate, eqpt.EQPT_ID); LogHelper.Log(logger: logger, LogLevel: LogLevel.Info, Class: nameof(OHCVValueDefMapAction), Device: DEVICE_NAME_OHCV, Data: receive_function.ToString(), VehicleID: eqpt.EQPT_ID); isSendSuccess = true; } else { isSendSuccess = false; } } else { send_function.resetHandshake(bcfApp, eqpt.EqptObjectCate, eqpt.EQPT_ID); } } catch (Exception ex) { logger.Error(ex, "Exception"); } finally { scApp.putFunBaseObj <OHxCToOHVC_RoadControlCompleteNotify>(send_function); scApp.putFunBaseObj <OHxCToOHVC_RoadControlCompleteNotifyReply>(receive_function); } return(isSendSuccess); }
private ValueWrite Normalize(ValueWrite val) { return(StripLeadingTabs(NoNewLineIfQuoted(val))); }
/// <summary> /// If a value being written is quoted, then there is no need to insert /// a newline because quotes are used as delimiters /// </summary> /// <param name="val"><see cref="ValueWrite"/> to test against</param> /// <returns>A new <see cref="ValueWrite"/> that ensures delimitation</returns> private ValueWrite NoNewLineIfQuoted(ValueWrite val) { return(val.HasFlag(ValueWrite.Quoted) ? val & ~ValueWrite.NewLine : val); }
public override void Write(string key, string value, ValueWrite valuetype) { Write(key); Write("="); Write(value, valuetype & ~ValueWrite.LeadingTabs); }
public override void WriteLine(string value, ValueWrite valuetype) { Write(value, Normalize(valuetype) | ValueWrite.NewLine); }
/// <summary> /// If a value being written is quoted, then there is no need to insert /// a newline because quotes are used as delimiters /// </summary> /// <param name="val"><see cref="ValueWrite"/> to test against</param> /// <returns>A new <see cref="ValueWrite"/> that ensures delimitation</returns> private ValueWrite NoNewLineIfQuoted(ValueWrite val) { return val.HasFlag(ValueWrite.Quoted) ? val & ~ValueWrite.NewLine : val; }
private ValueWrite Normalize(ValueWrite val) { return StripLeadingTabs(NoNewLineIfQuoted(val)); }
/// <summary> /// Writes a key-value pair to the stream with formatting specified by <paramref name="valuetype"/>. /// It is assumed that the key will be indented and that the value will not be. /// </summary> /// <param name="key">Key that identifies the value</param> /// <param name="value">Value to be written to the stream</param> /// <param name="valuetype">Dictates how the value should be written to the stream.</param> public override void Write(string key, string value, ValueWrite valuetype) { this.Write(key, ValueWrite.LeadingTabs); this.Writer.Write('='); this.Write(value, valuetype & ~ValueWrite.LeadingTabs); }
private ValueWrite StripLeadingTabs(ValueWrite val) { return val & ~ValueWrite.LeadingTabs; }
/// <summary> /// Writes a string dictated by a format /// </summary> /// <param name="value">String to be written</param> /// <param name="type">Denotes what modifications to be made on the string before being written</param> public void Write(string value, ValueWrite type) { if (type.HasFlag(ValueWrite.LeadingTabs)) { this.writer.Write(tabs[value == "}" ? this.currentIndent - 1 : this.currentIndent]); } this.UpdateCurrentIndentFromIndentsIn(value); this.writer.Write(type.HasFlag(ValueWrite.Quoted) ? '"' + value + '"' : value); if (type.HasFlag(ValueWrite.NewLine)) { this.writer.WriteLine(); } }
public override void WriteLine(string key, string value, ValueWrite valuetype) { this.Write(key, value, this.Normalize(valuetype) | ValueWrite.NewLine); }
public override void Write(string key, string value, ValueWrite valuetype) { this.Write(key, ValueWrite.LeadingTabs); this.Writer.Write('='); this.Write(value, valuetype & ~ValueWrite.LeadingTabs); }
/// <summary> /// Writes a string dictated by a format /// </summary> /// <param name="value">String to be written</param> /// <param name="type">Denotes what modifications to be made on the string before being written</param> public virtual void Write(string value, ValueWrite type) { if (type.HasFlag(ValueWrite.LeadingTabs)) { Writer.Write(ParadoxStreamWriter.tabs[value == "}" ? currentIndent - 1 : currentIndent]); } UpdateCurrentIndentFromIndentsIn(value); Writer.Write(type.HasFlag(ValueWrite.Quoted) ? '"' + value + '"' : value); if (type.HasFlag(ValueWrite.NewLine)) { Writer.WriteLine(); } }
public override void Write(string value, ValueWrite type) { base.Write(value, Normalize(type)); }
/// <summary> /// Writes a key-value pair followed by a line terminator to the stream with formatting specified by <paramref name="valuetype"/>. /// It is assumed that the key will be indented and that the value will not be. /// </summary> /// <param name="key">Key that identifies the value</param> /// <param name="value">Value to be written to the stream</param> /// <param name="valuetype">Dictates how the value should be written to the stream</param> public abstract void WriteLine(string key, string value, ValueWrite valuetype);
public override void Write(string key, string value, ValueWrite valuetype) { Write(key); Write("="); Write(value, valuetype & ~ValueWrite.LeadingTabs); }
/// <summary> /// Writes a string in the format of <paramref name="valuetype"/> followed by a line terminator. /// </summary> /// <param name="value">The string to be written to the text stream</param> /// <param name="valuetype">The format of how the string should be written</param> public override void WriteLine(string value, ValueWrite valuetype) { this.Write(value, valuetype | ValueWrite.NewLine); }
public override void Write(string value, ValueWrite type) { base.Write(value, Normalize(type)); }
public override void WriteLine(string key, string value, ValueWrite valuetype) { this.Write(key, value, this.Normalize(valuetype) | ValueWrite.NewLine); }
public override void WriteLine(string value, ValueWrite valuetype) { Write(value, Normalize(valuetype) | ValueWrite.NewLine); }
/// <summary> /// Writes a key-value pair followed by a line terminator to the stream with formatting specified by <paramref name="valuetype"/>. /// It is assumed that the key will be indented and that the value will not be. /// </summary> /// <param name="key">Key that identifies the value</param> /// <param name="value">Value to be written to the stream</param> /// <param name="valuetype">Dictates how the value should be written to the stream</param> public abstract void WriteLine(string key, string value, ValueWrite valuetype);
public override void WriteLine(string key, string value, ValueWrite valuetype) { Write(key, value, valuetype | ValueWrite.NewLine); }
public override void WriteLine(string value, ValueWrite valuetype) { this.Write(value, valuetype | ValueWrite.NewLine); }
/// <summary> /// Writes a key-value pair followed by a line terminator to the stream with formatting specified by <paramref name="valuetype"/>. /// It is assumed that the key will be indented and that the value will not be. /// </summary> /// <param name="key">Key that identifies the value</param> /// <param name="value">Value to be written to the stream</param> /// <param name="valuetype">Dictates how the value should be written to the stream</param> public void WriteLine(string key, string value, ValueWrite valuetype) { this.Write(key, value, valuetype | ValueWrite.NewLine); }