diff --git a/TBF/Rig/RegisterReaders/KPackE/DataEntryForRadio/EntryForm.cs b/TBF/Rig/RegisterReaders/KPackE/DataEntryForRadio/EntryForm.cs index bd41c7f1d..55f3a728f 100644 --- a/TBF/Rig/RegisterReaders/KPackE/DataEntryForRadio/EntryForm.cs +++ b/TBF/Rig/RegisterReaders/KPackE/DataEntryForRadio/EntryForm.cs @@ -68,22 +68,22 @@ namespace TBF.Rig.RegisterReaders.KPackE.DataEntryForRadio : base(cfg) { entryFormCfg = cfg as EntryFormCfg; - - radio = (KPackE.Radio.Radio)TbfComponents.FindComponent(entryFormCfg.Radio, components); - if (radio == null) throw new Exception("Cannot find Radio"); - - log.Warn(this.ToString()); } public override void Initialize() { + radio = (KPackE.Radio.Radio)TbfComponents.FindComponent(entryFormCfg.Radio); + if (radio == null) throw new Exception("Cannot find Radio"); radio.EntryForm = this; + disabled = new bool[Config.Data.WMsCount]; wmStartState = new double[Config.Data.WMsCount]; wmStartStateStr = new string[Config.Data.WMsCount]; wmEndState = new double[Config.Data.WMsCount]; wmCycleEndState = new string[Config.Data.WMsCount]; currentOp = CurrentOp.None; + + log.FatalFormat("{0} initialized: {1}", Name, this); } diff --git a/TBF/Rig/RegisterReaders/KPackE/Radio/Radio.cs b/TBF/Rig/RegisterReaders/KPackE/Radio/Radio.cs index a5feb4d91..3b940fb74 100644 --- a/TBF/Rig/RegisterReaders/KPackE/Radio/Radio.cs +++ b/TBF/Rig/RegisterReaders/KPackE/Radio/Radio.cs @@ -82,7 +82,6 @@ namespace TBF.Rig.RegisterReaders.KPackE.Radio : base(cfg) { radioCfg = cfg as RadioCfg; - log.Warn(this.ToString()); } public override void Initialize() @@ -91,22 +90,41 @@ namespace TBF.Rig.RegisterReaders.KPackE.Radio data = new List(); lastTelegramReceived = DateTime.MinValue; - if (radioCfg.DebugLevel == DebugMode.Simulate) - { - serialPort = null; - log.FatalFormat("{0} - Device simulated", Name); - } - else + if (radioCfg.DebugLevel == DebugMode.Normal) { string portName = "COM" + radioCfg.ComPortNr.ToString(); serialPort = new SerialPort(portName, radioCfg.BaudRate, radioCfg.Parity, radioCfg.DataBits, radioCfg.StopBits); serialPort.Handshake = radioCfg.Handshake; serialPort.Open(); - log.FatalFormat("{0} - Device successfully initialized", Name); + log.FatalFormat("{0} initialized: {1}", Name, this); + } + else + { + serialPort = null; + log.FatalFormat("{0} simulated: {1}", Name, this); } } + /// + /// Register(rr) is called from Initialize() function of RegisterReader-s + /// + /// RegisterReader reference + public void Register(RegisterReader.RegisterReader regReader) + { + RegReaders.Add(regReader); + } + + /// + /// Unregister(rr) is called from StopDevice() function of RegisterReader-s + /// + /// RegisterReader reference + public void Unregister(RegisterReader.RegisterReader regReader) + { + RegReaders.Remove(regReader); + } + + public void SendAcknowledgeNow() { serialPort.Write(Ack, 0, Ack.Length); @@ -168,9 +186,8 @@ namespace TBF.Rig.RegisterReaders.KPackE.Radio { if (rr.SerialNr == serialNr) { - double wmState = (double)reading; - rr.WMStateReceived(wmState); - EntryForm.WMStateReceived(serialNr, wmState); + rr.WMStateReceived((int)reading); + EntryForm.WMStateReceived(serialNr, reading * rr.LtrsPerPulse); break; } } @@ -261,12 +278,9 @@ namespace TBF.Rig.RegisterReaders.KPackE.Radio /// Stop this device public void StopDevice() { - if (serialPort != null) + if (serialPort != null && serialPort.IsOpen) { - //stopWorkerThread = true; - //workerThread.Join(2000); serialPort.Close(); - serialPort = null; } } diff --git a/TBF/Rig/RegisterReaders/KPackE/RegisterReader/ProcedureParams.cs b/TBF/Rig/RegisterReaders/KPackE/RegisterReader/ProcedureParams.cs index fcf0adad1..b2dcfca1b 100644 --- a/TBF/Rig/RegisterReaders/KPackE/RegisterReader/ProcedureParams.cs +++ b/TBF/Rig/RegisterReaders/KPackE/RegisterReader/ProcedureParams.cs @@ -34,10 +34,8 @@ namespace TBF.Rig.RegisterReaders.KPackE.RegisterReader { switch (i) { - case 0: - return PulsesPerLtr.ToString(); - default: - return string.Empty; + case 0: return PulsesPerLtr.ToString(); + default: return string.Empty; } } diff --git a/TBF/Rig/RegisterReaders/KPackE/RegisterReader/RegisterReader.cs b/TBF/Rig/RegisterReaders/KPackE/RegisterReader/RegisterReader.cs index 71d9b94fa..e51246940 100644 --- a/TBF/Rig/RegisterReaders/KPackE/RegisterReader/RegisterReader.cs +++ b/TBF/Rig/RegisterReaders/KPackE/RegisterReader/RegisterReader.cs @@ -8,12 +8,12 @@ using TBF.Boxes; namespace TBF.Rig.RegisterReaders.KPackE.RegisterReader { - public class RegisterReader : ComponentBase, GenericDevices.IRegReader, IOperation + public class RegisterReader : ComponentBase, Generic.IDevice, GenericDevices.IRegReader, IOperation { private static readonly ILog log = LogManager.GetLogger(typeof(RegisterReader)); public override string ToString() { return string.Format("{0}({1})", ClassName, Cfg.ToString(-1)); } - readonly RRCfg registerReaderCfg; + readonly RRCfg rrCfg; readonly Radio.Radio radio; readonly TBF.Rig.ControlBoard.Uni.UniCB uniCB; @@ -28,7 +28,7 @@ namespace TBF.Rig.RegisterReaders.KPackE.RegisterReader } } public Config.Entities.RegisterReaderType RegisterReaderType { get { return Config.Entities.RegisterReaderType.Manual; } } - public double PulsesPerLtr { get { return registerReaderCfg.ProcParams.PulsesPerLtr; } } + public double PulsesPerLtr { get { return rrCfg.ProcParams.PulsesPerLtr; } } public double LtrsPerPulse { get { return (PulsesPerLtr <= float.Epsilon) ? 1.0 : (1 / PulsesPerLtr); } } /// @@ -41,39 +41,26 @@ namespace TBF.Rig.RegisterReaders.KPackE.RegisterReader /// Called by Radio when data for SerialNr were received /// /// - public void WMStateReceived(double wmState) + public void WMStateReceived(int wmState) { + WMPulses = wmState; + if (IsEndOfTest) { - endWMState = wmState; + EndWMState = wmState; } else { - beginWMState = wmState; + BeginWMState = wmState; } } - double beginWMState; - public double BeginWMState - { - get { return beginWMState; } - set { beginWMState = value; } - } - - double endWMState; - public double EndWMState - { - get { return endWMState; } - set { endWMState = value; } - } - - public double WMVolume { get { return endWMState - beginWMState; } } - - public int WMPulses { get { return (int)(WMVolume / LtrsPerPulse); } } - - int wmRefPulses; - public int WMRefPulses { get { return wmRefPulses; } } + public int WMPulses { get; set; } + public int WMRefPulses { get; set; } + public double WMVolume { get { return WMPulses * LtrsPerPulse; } } + public double BeginWMState { get; set; } + public double EndWMState { get; set; } public RegisterReader() { } @@ -81,7 +68,7 @@ namespace TBF.Rig.RegisterReaders.KPackE.RegisterReader public RegisterReader(Generic.IComponentCfg cfg, IList components) : base(cfg) { - registerReaderCfg = cfg as RRCfg; + rrCfg = cfg as RRCfg; /// Control board is used to read reference flowmeter pulses radio = (Radio.Radio)TbfComponents.FindComponent(cfg.ParentName, components); @@ -95,17 +82,26 @@ namespace TBF.Rig.RegisterReaders.KPackE.RegisterReader public override void Initialize() { + radio.Register(this); Clear(); } public void Clear() { - log.DebugFormat("{0}:Clear()", Name); - beginWMState = 0; - endWMState = 0; - wmRefPulses = 0; + BeginWMState = 0; + EndWMState = 0; + WMRefPulses = 0; } + public void StopDevice() + { + radio.Unregister(this); + } + + public void RunDeviceBefore() { } + public void RunDeviceAfter() { } + public void StopDevice2() { } + /// /// Events: Event.ReadRegisterDone @@ -118,7 +114,7 @@ namespace TBF.Rig.RegisterReaders.KPackE.RegisterReader private void ReadPulses() { - wmRefPulses = (uniCB != null) ? uniCB.RefPulses : 0; + WMRefPulses = (uniCB != null) ? uniCB.RefPulses : 0; } /// Start this operation @@ -136,8 +132,6 @@ namespace TBF.Rig.RegisterReaders.KPackE.RegisterReader } /// Stop this operation - public void Stop() - { - } + public void Stop() { } } }