Version 1.5.84. Reading registers, scales, temperature, pressure, ... during test done in one state in the sequence.

Many changes in TestMethods.iPerlCommunication and WaterMeters.iPerl.WaterMeter. iPerl measurement with opto-data works OK.
Logging in State changed, ...
This commit is contained in:
Milan Hanajik
2015-08-19 13:04:47 +02:00
parent fa6b99b980
commit 33963ec8cf
18 changed files with 635 additions and 249 deletions
@@ -17,8 +17,10 @@ namespace TBF.BenchControl.Operations
int readersCount;
int[] iPulses;
int[] iRefPulses;
double[] dTimes;
IntBox[] pulses;
IntBox[] refPulses;
DoubleBox[] times;
IOperation[] readRegOps;
/// <summary>
@@ -90,6 +92,54 @@ namespace TBF.BenchControl.Operations
log.Debug(this.ToString());
}
/// <summary>
/// Events: eventDone (default=Event.ReadRegisterDone) or Event.Error
/// </summary>
/// <param name="register">Register reader reference</param>
/// <param name="pulses">Reference to the water meter register state in pulses</param>
public ReadMoreRegistersOp(GenericDevices.IRegisterReader[] readers, ref int[] iPulses, ref double[] dTimes, ref int[] iRefPulses)
: this(readers, ref iPulses)
{
if (readers == null) throw new ArgumentNullException("readers");
readersCount = readers.Length;
if (iPulses == null || iPulses.Length != readersCount ||
dTimes == null || dTimes.Length != readersCount ||
iRefPulses == null || iRefPulses.Length != readersCount)
{
throw new ArgumentException("iPulses or iRefPulses");
}
this.iPulses = iPulses;
this.dTimes = dTimes;
this.iRefPulses = iRefPulses;
pulses = new IntBox[Program.WMsCount];
times = new DoubleBox[Program.WMsCount];
refPulses = new IntBox[Program.WMsCount];
readRegOps = new IOperation[readersCount];
for (int i = 0; i < readersCount; i++)
{
pulses[i] = new IntBox(iPulses[i]);
times[i] = new DoubleBox(dTimes[i]);
refPulses[i] = new IntBox(iRefPulses[i]);
if (readers[i] != null)
{
if (readers[i] is WaterMeters.iPerl.WaterMeter)
{
readRegOps[i] = (readers[i] as WaterMeters.iPerl.WaterMeter).ReadRegisterOp(ref pulses[i], ref times[i], ref refPulses[i]);
}
else
{
readRegOps[i] = readers[i].ReadRegisterOp(ref pulses[i], ref refPulses[i]);
}
}
}
log.Debug(this.ToString());
}
/// <summary>Start this operation</summary>
public void Start()
{