iPerlCommunication : 250ms delayafter writes, more logging, Opto-Data indication using pictureBoxes fixed.
This commit is contained in:
parent
1ad8a69717
commit
63b5507f78
@ -1,6 +1,9 @@
|
||||
///
|
||||
/// Copyright (c) 2015 Sensus Metering Systems
|
||||
/// Copyright (c) 2015-2016 Sensus Metering Systems
|
||||
///
|
||||
//#define VERIFY_ACTIVE_MODE
|
||||
//#define VERIFY_Q2_CORR_RESET
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
@ -122,68 +125,50 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
|
||||
/// <returns>Value returned by readRequestPort(...)</returns>
|
||||
public static unsafe int ReadRequestPort(WaterMeters.iPerl.WaterMeter wm, MessageID messageID, int offset, int lenght, out byte[] buffer, int timeout)
|
||||
{
|
||||
byte[] buf = new byte[200];
|
||||
int retv;
|
||||
buffer = new byte[lenght];
|
||||
|
||||
fixed (byte* pBuf = buf)
|
||||
if (wm.DebugLevel != DebugMode.Normal) return wm.Name.Equals("iPerl13") ? 2 : 0; /// Simulates an error on position 13
|
||||
|
||||
|
||||
byte[] buf = new byte[200];
|
||||
///
|
||||
fixed (byte* pBuf = buf)
|
||||
{
|
||||
if (wm.DebugLevel == DebugMode.Normal)
|
||||
{
|
||||
if (wm.RfidComPortNr > 0)
|
||||
{
|
||||
retv = readRequestPort1(messageID, offset, lenght, pBuf, timeout);
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (wm.MuxBoardNr)
|
||||
{
|
||||
default:
|
||||
case 1: retv = readRequestPort1(messageID, offset, lenght, pBuf, timeout); break;
|
||||
case 2: retv = readRequestPort2(messageID, offset, lenght, pBuf, timeout); break;
|
||||
case 3: retv = readRequestPort3(messageID, offset, lenght, pBuf, timeout); break;
|
||||
case 4: retv = readRequestPort4(messageID, offset, lenght, pBuf, timeout); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/// Simulation
|
||||
if (messageID == MessageID.Configuration)
|
||||
{
|
||||
}
|
||||
else if (messageID == MessageID.Calibration)
|
||||
{
|
||||
}
|
||||
else if (messageID == MessageID.MetrologyMemory)
|
||||
{
|
||||
}
|
||||
int retv;
|
||||
|
||||
if (wm.Name.Equals("iPerl13"))
|
||||
retv = 2;
|
||||
else
|
||||
retv = 0;
|
||||
}
|
||||
if (wm.RfidComPortNr > 0)
|
||||
{
|
||||
retv = readRequestPort1(messageID, offset, lenght, pBuf, timeout);
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (wm.MuxBoardNr)
|
||||
{
|
||||
default:
|
||||
case 1: retv = readRequestPort1(messageID, offset, lenght, pBuf, timeout); break;
|
||||
case 2: retv = readRequestPort2(messageID, offset, lenght, pBuf, timeout); break;
|
||||
case 3: retv = readRequestPort3(messageID, offset, lenght, pBuf, timeout); break;
|
||||
case 4: retv = readRequestPort4(messageID, offset, lenght, pBuf, timeout); break;
|
||||
}
|
||||
}
|
||||
|
||||
buffer = new byte[lenght];
|
||||
for (int i = 0; i < lenght; i++) buffer[i] = buf[i];
|
||||
|
||||
string name = string.Format("{0}({1})", wm.Name, wm.SerialNr);
|
||||
///
|
||||
///
|
||||
/// Logging
|
||||
///
|
||||
string name = string.Format("{0}({1})", wm.Name, wm.SerialNr);
|
||||
if ((messageID == MessageID.Configuration) && (offset == 0) && (lenght == WaterMeters.iPerl.ConfigStruct.Length))
|
||||
{
|
||||
rfidDataLogger.InfoFormat("{0}: ReadRequestPort({1},...) returned {2} {3}", name, messageID, retv, (retv != 0) ? "!" : WaterMeters.iPerl.ConfigStruct.FromByteArray(buffer).ToString());
|
||||
}
|
||||
else if ((messageID == MessageID.Calibration) && (offset == 0) && (lenght == WaterMeters.iPerl.CalibrationStruct.Length))
|
||||
{
|
||||
rfidDataLogger.InfoFormat("{0}: ReadRequestPort({1},...) returned {2} {3}", name, messageID, retv, (retv != 0) ? "!" : WaterMeters.iPerl.CalibrationStruct.FromByteArray(buffer).ToString());
|
||||
}
|
||||
else
|
||||
{
|
||||
else if ((messageID == MessageID.Calibration) && (offset == 2) && (lenght == 2))
|
||||
rfidDataLogger.InfoFormat("{0}: ReadRequestPort({1},2,2,...) returned {2} {3}", name, messageID, retv, (retv != 0) ? "!" : string.Format("Cal={0}", buf[0] + 256 * buf[1]));
|
||||
else
|
||||
rfidDataLogger.InfoFormat("{0}: ReadRequestPort({1}, {2}, {3}, ...) returned {4} {5}", name, messageID, offset, lenght, retv, (retv != 0) ? "!" : "");
|
||||
}
|
||||
}
|
||||
|
||||
return retv;
|
||||
return retv;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -192,48 +177,36 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
|
||||
/// <returns>Value returned by writeRequestPort(...)</returns>
|
||||
public static unsafe int WriteRequestPort(WaterMeters.iPerl.WaterMeter wm, MessageID messageID, int offset, int lenght, byte[] buffer, int timeout)
|
||||
{
|
||||
int retv;
|
||||
if (wm.DebugLevel != DebugMode.Normal) return 0;
|
||||
|
||||
fixed (byte* pBuf = buffer)
|
||||
{
|
||||
if (wm.DebugLevel == DebugMode.Normal)
|
||||
{
|
||||
if (wm.RfidComPortNr > 0)
|
||||
{
|
||||
retv = writeRequestPort1(messageID, offset, lenght, pBuf, timeout);
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (wm.MuxBoardNr)
|
||||
{
|
||||
default:
|
||||
case 1: retv = writeRequestPort1(messageID, offset, lenght, pBuf, timeout); break;
|
||||
case 2: retv = writeRequestPort2(messageID, offset, lenght, pBuf, timeout); break;
|
||||
case 3: retv = writeRequestPort3(messageID, offset, lenght, pBuf, timeout); break;
|
||||
case 4: retv = writeRequestPort4(messageID, offset, lenght, pBuf, timeout); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/// Simulation
|
||||
if (messageID == MessageID.Configuration)
|
||||
{
|
||||
}
|
||||
else if (messageID == MessageID.Calibration)
|
||||
{
|
||||
}
|
||||
else if (messageID == MessageID.MetrologyMemory)
|
||||
{
|
||||
}
|
||||
retv = 0;
|
||||
}
|
||||
int retv;
|
||||
|
||||
string name = string.Format("{0}({1})", wm.Name, wm.SerialNr);
|
||||
///
|
||||
if (lenght == 1)
|
||||
if (wm.RfidComPortNr > 0)
|
||||
{
|
||||
rfidDataLogger.InfoFormat("{0}: WriteRequestPort({2}, {3}, {4}, {5}) returned {1} {6}", name, retv, messageID, offset, lenght, pBuf[0].ToString("X2"), (retv != 0) ? "!" : "");
|
||||
retv = writeRequestPort1(messageID, offset, lenght, pBuf, timeout);
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (wm.MuxBoardNr)
|
||||
{
|
||||
default:
|
||||
case 1: retv = writeRequestPort1(messageID, offset, lenght, pBuf, timeout); break;
|
||||
case 2: retv = writeRequestPort2(messageID, offset, lenght, pBuf, timeout); break;
|
||||
case 3: retv = writeRequestPort3(messageID, offset, lenght, pBuf, timeout); break;
|
||||
case 4: retv = writeRequestPort4(messageID, offset, lenght, pBuf, timeout); break;
|
||||
}
|
||||
}
|
||||
|
||||
Thread.Sleep(250);
|
||||
|
||||
///
|
||||
/// Logging
|
||||
///
|
||||
string name = string.Format("{0}({1})", wm.Name, wm.SerialNr);
|
||||
if (lenght == 1)
|
||||
rfidDataLogger.InfoFormat("{0}: WriteRequestPort({2}, {3}, {4}, {5}) returned {1} {6}", name, retv, messageID, offset, lenght, pBuf[0].ToString("X2"), (retv != 0) ? "!" : "");
|
||||
else if (lenght == 2)
|
||||
{
|
||||
if (messageID == MessageID.Calibration && offset == 2)
|
||||
@ -242,16 +215,13 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
|
||||
rfidDataLogger.InfoFormat("{0}: WriteRequestPort(calibFactor={1}) returned {2} {3}", name, calibFactor, retv, (retv != 0) ? "!" : "");
|
||||
}
|
||||
else
|
||||
{
|
||||
rfidDataLogger.InfoFormat("{0}: WriteRequestPort({2}, {3}, {4}, {5} {6}) returned {1} {7}", name, retv, messageID, offset, lenght, pBuf[0].ToString("X2"), pBuf[1].ToString("X2"), (retv != 0) ? "!" : "");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
rfidDataLogger.InfoFormat("{0}: WriteRequestPort({2}, {3}, {4}, {5} {6} ...) returned {1} {7}", name, retv, messageID, offset, lenght, pBuf[0].ToString("X2"), pBuf[1].ToString("X2"), (retv != 0) ? "!" : "");
|
||||
}
|
||||
|
||||
return retv;
|
||||
}
|
||||
return retv;
|
||||
}
|
||||
|
||||
#endregion DLL_Interface
|
||||
@ -916,7 +886,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
|
||||
}
|
||||
}
|
||||
|
||||
#if false
|
||||
#if VERIFY_ACTIVE_MODE
|
||||
if (error == CommErr.None)
|
||||
{
|
||||
error = CommErr.Verify;
|
||||
@ -1103,8 +1073,8 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
|
||||
|
||||
///
|
||||
/// Verification disabled on 16.02.2016
|
||||
///
|
||||
#if false
|
||||
///
|
||||
#if VERIFY_Q2_CORR_RESET
|
||||
/// Verify the correction factors
|
||||
if (error == CommErr.None)
|
||||
{
|
||||
|
||||
@ -347,15 +347,17 @@ namespace TBF.BenchControl.WaterMeters.iPerl
|
||||
public int FlushedDataCount
|
||||
{
|
||||
get { return flushedDataCount; }
|
||||
set { flushedDataCount = lastFlushedDataCount = value; }
|
||||
set { flushedDataCount = lastFlushedDataCount = lastFlushedDataCount_1 = value; }
|
||||
}
|
||||
|
||||
int lastFlushedDataCount_1;
|
||||
int lastFlushedDataCount;
|
||||
public int FlushedDataDelta
|
||||
{
|
||||
get
|
||||
{
|
||||
int retval = flushedDataCount - lastFlushedDataCount;
|
||||
int retval = Math.Max(flushedDataCount - lastFlushedDataCount, lastFlushedDataCount - lastFlushedDataCount_1);
|
||||
lastFlushedDataCount_1 = lastFlushedDataCount;
|
||||
lastFlushedDataCount = flushedDataCount;
|
||||
return retval;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user