123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- using System;
- using System.Xml;
- using Aitex.Core.Common.DeviceData;
- using Aitex.Core.RT.DataCenter;
- using Aitex.Core.RT.Device;
- using Aitex.Core.RT.IOCore;
- using Aitex.Core.RT.OperationCenter;
- using Aitex.Core.RT.SCCore;
- using Aitex.Core.Util;
- using MECF.Framework.Common.Device.Bases;
- namespace VirgoRT.Devices.IODevices
- {
- class IoMatch : RfMatchBase
- {
- // ----------------------------Fields--------------------------
- //
- //private AOAccessor _aoMatchMode;
- private readonly AOAccessor _aoMatchPositionC1;
- private readonly AOAccessor _aoMatchPositionC2;
- private AIAccessor _aiMatchPresetMode;
- private AIAccessor _aiMatchMode;
- private readonly AIAccessor _aiMatchPositionC1;
- private readonly AIAccessor _aiMatchPositionC2;
- private AOAccessor _aoMatchPresetMode;
- //SC
- private int _scMatchPresetMode;
- private int _scMatchMode;
- private readonly SCConfigItem _scMatchPositionC1;
- private readonly SCConfigItem _scMatchPositionC2;
- private readonly bool _scEnableC1C2Position;
- // --------------------------Properties------------------------
- //
- public bool EnableC1C2Position => _scEnableC1C2Position;
- public override AITRfMatchData DeviceData { get {
- return new AITRfMatchData
- {
- //EnableC1C2Position = EnableC1C2Position,
- //WorkMode = (int)WorkMode,
- //MatchPositionC1 = MatchPositionC1,
- //MatchPositionC2 = MatchPositionC2,
- //MatchPositionC1SetPoint = MatchPositionC1,
- //MatchPositionC2SetPoint = MatchPositionC2,
- };
- }
- }
- // --------------------------Constructor-----------------------
- //
- public IoMatch(string module, XmlElement node, string ioModule = "")
- {
- _aiMatchPresetMode = ParseAiNode("aiMatchPresetMode", node, ioModule);
- _aiMatchMode = ParseAiNode("aiMatchMode", node, ioModule);
- _aiMatchPositionC1 = ParseAiNode("aiMatchPositionC1", node, ioModule);
- _aiMatchPositionC2 = ParseAiNode("aiMatchPositionC2", node, ioModule);
- _aoMatchPresetMode = ParseAoNode("aoMatchPresetMode", node, ioModule);
- //_aoMatchMode = ParseAoNode("aoMatchMode", node);
- _aoMatchPositionC1 = ParseAoNode("aoMatchPositionC1", node);
- _aoMatchPositionC2 = ParseAoNode("aoMatchPositionC2", node);
- _scMatchPresetMode = ParseScNode("scMatchPresetMode", node).IntValue;
- _scMatchMode = SC.GetValue<int>($"{Module}.{Name}.MatchMode");
- _scMatchPositionC1 = SC.GetConfigItem($"{Module}.{Name}.MatchPositionC1");
- _scMatchPositionC2 = SC.GetConfigItem($"{Module}.{Name}.MatchPositionC2");
- _scEnableC1C2Position = SC.GetValue<bool>($"{Module}.{Name}.EnableC1C2Position");
- }
- // -----------------------------Method-------------------------
- //
- public override bool Initialize()
- {
- DEVICE.Register($"{Module}.{Name}.{AITRfMatchOperation.SetMatchPositionC1}", _setMatchC1);
- DEVICE.Register($"{Module}.{Name}.{AITRfMatchOperation.SetMatchPositionC2}", _setMatchC2);
- OP.Subscribe($"{Module}.{Name}.{AITRfMatchOperation.SetMatchPositionC1}", (out string reason, int time, object[] param) =>
- {
- _setMatchC1(out reason, 0, param);
- return true;
- });
- OP.Subscribe($"{Module}.{Name}.{AITRfMatchOperation.SetMatchPositionC2}", (out string reason, int time, object[] param) =>
- {
- _setMatchC2(out reason, 0, param);
- return true;
- });
- return true;
- }
- public override void Monitor()
- {
- throw new NotImplementedException();
- }
- public override void Terminate()
- {
- throw new NotImplementedException();
- }
- public override void Reset()
- {
- throw new NotImplementedException();
- }
- private bool? _setMatchC1(out string reason, int time, object[] param)
- {
- if (null == _aoMatchPositionC1)
- {
- reason = "No Match C1 IO setting";
- return false;
- }
- else
- {
- double c1 = Convert.ToDouble((string)param[0]);
- c1 = Math.Max(double.Parse(_scMatchPositionC1.Min), c1);
- c1 = Math.Min(double.Parse(_scMatchPositionC1.Max), c1);
- _aoMatchPositionC1.Value = (short)c1;
- reason = $"Set RF match position c1 :{c1}";
- return true;
- }
- }
- private bool? _setMatchC2(out string reason, int time, object[] param)
- {
- if (null == _aoMatchPositionC1)
- {
- reason = "No Match C2 IO setting";
- return false;
- }
- else
- {
- double c2 = Convert.ToDouble((string)param[0]);
- c2 = Math.Max(double.Parse(_scMatchPositionC2.Min), c2);
- c2 = Math.Min(double.Parse(_scMatchPositionC2.Max), c2);
- _aoMatchPositionC2.Value = (short)c2;
- reason = $"Set RF match position c2 :{c2}";
- return true;
- }
- }
- }
- }
|