private static void Setup(LadderNetworkViewModel lnvmodel) { foreach (BaseViewModel bvmodel in lnvmodel.GetElements()) { bvmodel.ViewCtrl = smmanager; BaseModel bmodel = bvmodel.Model; if (bmodel == null) { continue; } for (int i = 0; i < bmodel.ParaCount; i++) { IValueModel vmodel = bmodel.GetPara(i); SimulateVariableUnit svunit = null; if (vmodel.ValueString.Equals(String.Empty)) { continue; } switch (vmodel.Type) { case LadderValueType.Bool: svunit = smodel.GetVariableUnit(vmodel.ValueString, "BIT"); break; case LadderValueType.Word: svunit = smodel.GetVariableUnit(vmodel.ValueString, "WORD"); break; case LadderValueType.DoubleWord: svunit = smodel.GetVariableUnit(vmodel.ValueString, "DWORD"); break; case LadderValueType.Float: svunit = smodel.GetVariableUnit(vmodel.ValueString, "FLOAT"); break; case LadderValueType.String: svunit = new SimulateStringUnit(vmodel.ValueString); break; } svunit.CanClose = false; SimuMoniValueModel smvmodel = new SimuMoniValueModel(svunit, smodel); bvmodel.SetValueModel(i, smvmodel); } } }
public void Handle(IMoniValueModel mvmodel, ElementValueModifyEventArgs e) { if (mvmodel is SimuMoniValueModel) { SimuMoniValueModel smvmodel = (SimuMoniValueModel)mvmodel; switch (e.Type) { case ElementValueModifyEventType.ForceON: case ElementValueModifyEventType.ForceOFF: smvmodel.Lock(e.Value, e.VarType); break; case ElementValueModifyEventType.WriteON: case ElementValueModifyEventType.WriteOFF: case ElementValueModifyEventType.Write: smvmodel.Write(e.Value, e.VarType); break; case ElementValueModifyEventType.ForceCancel: smvmodel.Unlock(); break; case ElementValueModifyEventType.AllCancel: smvmodel.UnlockAll(); break; } } if (mvmodel is ElementModel) { ElementModel element = (ElementModel)mvmodel; ICommunicationCommand command = null; switch (e.Type) { case ElementValueModifyEventType.ForceON: element.SetValue = "ON"; Lock(element); break; case ElementValueModifyEventType.ForceOFF: element.SetValue = "OFF"; Lock(element); break; case ElementValueModifyEventType.ForceCancel: element.SetValue = String.Empty; command = new ForceCancelCommand(false, element); Add(command); break; case ElementValueModifyEventType.AllCancel: element.SetValue = String.Empty; command = new ForceCancelCommand(true, element); Add(command); break; case ElementValueModifyEventType.WriteOFF: element.SetValue = "OFF"; Write(element); break; case ElementValueModifyEventType.WriteON: element.SetValue = "ON"; Write(element); break; case ElementValueModifyEventType.Write: element.SetValue = e.Value; Write(element); break; } } }