iPerlCommunication simulation
This commit is contained in:
@@ -174,13 +174,46 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
|
|||||||
/// <param name="threadID">0..3</param>
|
/// <param name="threadID">0..3</param>
|
||||||
/// <param name="iperlHead">Water meter (iPerlHead) object</param>
|
/// <param name="iperlHead">Water meter (iPerlHead) object</param>
|
||||||
/// <returns>Value returned by readRequestPort(...)</returns>
|
/// <returns>Value returned by readRequestPort(...)</returns>
|
||||||
public static unsafe int ReadRequestPort(int threadID, IperlHead iperlHead, MessageID messageID, int offset, int lenght, out byte[] buffer, int timeout)
|
public static unsafe int ReadRequestPort(int threadID, IperlHead iperlHead, MessageID messageID, int offset, int length, out byte[] buffer, int timeout)
|
||||||
{
|
{
|
||||||
buffer = new byte[lenght];
|
if (iperlHead.DebugLevel != DebugMode.Normal)
|
||||||
|
{
|
||||||
if (iperlHead.DebugLevel != DebugMode.Normal) return iperlHead.Name.Equals("iPerl13") ? 2 : 0; /// Simulates an error on position 13
|
///
|
||||||
|
/// Simulation
|
||||||
|
///
|
||||||
|
if ((messageID == MessageID.Configuration) && (offset == 0) && (length == ConfigStruct.Length))
|
||||||
|
{
|
||||||
|
buffer = new byte[ConfigStruct.Length] { 3, 3, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0, 1,2,3,4,5, 160, 0,0,0,0, 0,0, 0,0, 0,0 };
|
||||||
|
}
|
||||||
|
else if ((messageID == MessageID.Calibration) && (offset == 0) && (length == CalibrationStruct.Length))
|
||||||
|
{
|
||||||
|
buffer = new byte[CalibrationStruct.Length] { 3, 0, 150,10, 0, 0, 0,0, 0,0,0,0,0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0,0,0, 1,2,3,4,5, 0, 0 };
|
||||||
|
}
|
||||||
|
else if ((messageID == MessageID.Calibration) && (offset == 0) && (length == CalibrationStructV4.Length))
|
||||||
|
{
|
||||||
|
buffer = new byte[CalibrationStructV4.Length] { 3, 0, 150,10, 0, 0, 0,0, 0,0,0,0,0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0,0,0, 1,2,3,4,5, 0, 0, 150,10 };
|
||||||
|
}
|
||||||
|
else if ((messageID == MessageID.Calibration) && (offset == 2) && (length == 2))
|
||||||
|
{
|
||||||
|
buffer = new byte[2] { 150,10 };
|
||||||
|
}
|
||||||
|
else if ((messageID == MessageID.Calibration) && (offset == 34) && (length == 2))
|
||||||
|
{
|
||||||
|
buffer = new byte[2] { 150,10 };
|
||||||
|
}
|
||||||
|
else if ((messageID == MessageID.MetrologyMemory) && (offset == Q2CorrFactorsAddr) && (length == 2))
|
||||||
|
{
|
||||||
|
buffer = new byte[2] { 0, 0 };
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
buffer = new byte[length];
|
||||||
|
}
|
||||||
|
|
||||||
|
return iperlHead.Name.Equals("iPerl13") ? 2 : 0; /// Simulates an error on position 13
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer = new byte[length];
|
||||||
byte[] buf = new byte[200];
|
byte[] buf = new byte[200];
|
||||||
///
|
///
|
||||||
fixed (byte* pBuf = buf)
|
fixed (byte* pBuf = buf)
|
||||||
@@ -190,32 +223,32 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
|
|||||||
switch (threadID)
|
switch (threadID)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
case 0: retv = readRequestPort1(messageID, offset, lenght, pBuf, timeout); break;
|
case 0: retv = readRequestPort1(messageID, offset, length, pBuf, timeout); break;
|
||||||
case 1: retv = readRequestPort2(messageID, offset, lenght, pBuf, timeout); break;
|
case 1: retv = readRequestPort2(messageID, offset, length, pBuf, timeout); break;
|
||||||
case 2: retv = readRequestPort3(messageID, offset, lenght, pBuf, timeout); break;
|
case 2: retv = readRequestPort3(messageID, offset, length, pBuf, timeout); break;
|
||||||
case 3: retv = readRequestPort4(messageID, offset, lenght, pBuf, timeout); break;
|
case 3: retv = readRequestPort4(messageID, offset, length, pBuf, timeout); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < lenght; i++) buffer[i] = buf[i];
|
for (int i = 0; i < length; i++) buffer[i] = buf[i];
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Logging
|
/// Logging
|
||||||
///
|
///
|
||||||
string name = string.Format("{0}({1})", iperlHead.Name, iperlHead.SerialNr);
|
string name = string.Format("{0}({1})", iperlHead.Name, iperlHead.SerialNr);
|
||||||
if ((messageID == MessageID.Configuration) && (offset == 0) && (lenght == ConfigStruct.Length))
|
if ((messageID == MessageID.Configuration) && (offset == 0) && (length == ConfigStruct.Length))
|
||||||
rfidDataLogger.InfoFormat("{0}: ReadRequestPort({1},...) returned {2} {3}", name, messageID, retv, (retv != 0) ? "!" : ConfigStruct.FromByteArray(buffer).ToString());
|
rfidDataLogger.InfoFormat("{0}: ReadRequestPort({1},...) returned {2} {3}", name, messageID, retv, (retv != 0) ? "!" : ConfigStruct.FromByteArray(buffer).ToString());
|
||||||
else if ((messageID == MessageID.Calibration) && (offset == 0) && (lenght == CalibrationStruct.Length))
|
else if ((messageID == MessageID.Calibration) && (offset == 0) && (length == CalibrationStruct.Length))
|
||||||
rfidDataLogger.InfoFormat("{0}: ReadRequestPort({1},...) returned {2} {3}", name, messageID, retv, (retv != 0) ? "!" : CalibrationStruct.FromByteArray(buffer).ToString());
|
rfidDataLogger.InfoFormat("{0}: ReadRequestPort({1},...) returned {2} {3}", name, messageID, retv, (retv != 0) ? "!" : CalibrationStruct.FromByteArray(buffer).ToString());
|
||||||
else if ((messageID == MessageID.Calibration) && (offset == 0) && (lenght == CalibrationStructV4.Length))
|
else if ((messageID == MessageID.Calibration) && (offset == 0) && (length == CalibrationStructV4.Length))
|
||||||
rfidDataLogger.InfoFormat("{0}: ReadRequestPort({1},...) returned {2} {3}", name, messageID, retv, (retv != 0) ? "!" : CalibrationStructV4.FromByteArray(buffer).ToString());
|
rfidDataLogger.InfoFormat("{0}: ReadRequestPort({1},...) returned {2} {3}", name, messageID, retv, (retv != 0) ? "!" : CalibrationStructV4.FromByteArray(buffer).ToString());
|
||||||
else if ((messageID == MessageID.Calibration) && (offset == 2) && (lenght == 2))
|
else if ((messageID == MessageID.Calibration) && (offset == 2) && (length == 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]));
|
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 if ((messageID == MessageID.Calibration) && (offset == 34) && (lenght == 2))
|
else if ((messageID == MessageID.Calibration) && (offset == 34) && (length == 2))
|
||||||
rfidDataLogger.InfoFormat("{0}: ReadRequestPort({1},34,2,...) returned {2} {3}", name, messageID, retv, (retv != 0) ? "!" : string.Format("CalLNA={0}", buf[0] + 256 * buf[1]));
|
rfidDataLogger.InfoFormat("{0}: ReadRequestPort({1},34,2,...) returned {2} {3}", name, messageID, retv, (retv != 0) ? "!" : string.Format("CalLNA={0}", buf[0] + 256 * buf[1]));
|
||||||
else if ((messageID == MessageID.MetrologyMemory) && (offset == Q2CorrFactorsAddr) && (lenght == 2))
|
else if ((messageID == MessageID.MetrologyMemory) && (offset == Q2CorrFactorsAddr) && (length == 2))
|
||||||
rfidDataLogger.InfoFormat("{0}: ReadRequestPort({1},6264,2,...) returned {2} {3}", name, messageID, retv, (retv != 0) ? "!" : string.Format("LR={0} RL={1}", (int)buf[0], (int)buf[1]));
|
rfidDataLogger.InfoFormat("{0}: ReadRequestPort({1},6264,2,...) returned {2} {3}", name, messageID, retv, (retv != 0) ? "!" : string.Format("LR={0} RL={1}", (int)buf[0], (int)buf[1]));
|
||||||
else
|
else
|
||||||
rfidDataLogger.InfoFormat("{0}: ReadRequestPort({1}, {2}, {3}, ...) returned {4} {5}", name, messageID, offset, lenght, retv, (retv != 0) ? "!" : "");
|
rfidDataLogger.InfoFormat("{0}: ReadRequestPort({1}, {2}, {3}, ...) returned {4} {5}", name, messageID, offset, length, retv, (retv != 0) ? "!" : "");
|
||||||
|
|
||||||
return retv;
|
return retv;
|
||||||
}
|
}
|
||||||
@@ -227,7 +260,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
|
|||||||
/// <param name="threadID">0..3</param>
|
/// <param name="threadID">0..3</param>
|
||||||
/// <param name="iperlHead">Water meter (iPerlHead) object</param>
|
/// <param name="iperlHead">Water meter (iPerlHead) object</param>
|
||||||
/// <returns>Value returned by writeRequestPort(...)</returns>
|
/// <returns>Value returned by writeRequestPort(...)</returns>
|
||||||
public static unsafe int WriteRequestPort(int threadID, IperlHead iperlHead, MessageID messageID, int offset, int lenght, byte[] buffer, int timeout)
|
public static unsafe int WriteRequestPort(int threadID, IperlHead iperlHead, MessageID messageID, int offset, int length, byte[] buffer, int timeout)
|
||||||
{
|
{
|
||||||
if (iperlHead.DebugLevel != DebugMode.Normal) return 0;
|
if (iperlHead.DebugLevel != DebugMode.Normal) return 0;
|
||||||
|
|
||||||
@@ -238,10 +271,10 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
|
|||||||
switch (threadID)
|
switch (threadID)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
case 0: retv = writeRequestPort1(messageID, offset, lenght, pBuf, timeout); break;
|
case 0: retv = writeRequestPort1(messageID, offset, length, pBuf, timeout); break;
|
||||||
case 1: retv = writeRequestPort2(messageID, offset, lenght, pBuf, timeout); break;
|
case 1: retv = writeRequestPort2(messageID, offset, length, pBuf, timeout); break;
|
||||||
case 2: retv = writeRequestPort3(messageID, offset, lenght, pBuf, timeout); break;
|
case 2: retv = writeRequestPort3(messageID, offset, length, pBuf, timeout); break;
|
||||||
case 3: retv = writeRequestPort4(messageID, offset, lenght, pBuf, timeout); break;
|
case 3: retv = writeRequestPort4(messageID, offset, length, pBuf, timeout); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
Thread.Sleep(250);
|
Thread.Sleep(250);
|
||||||
@@ -250,9 +283,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
|
|||||||
/// Logging
|
/// Logging
|
||||||
///
|
///
|
||||||
string name = string.Format("{0}({1})", iperlHead.Name, iperlHead.SerialNr);
|
string name = string.Format("{0}({1})", iperlHead.Name, iperlHead.SerialNr);
|
||||||
if (lenght == 1)
|
if (length == 1)
|
||||||
rfidDataLogger.InfoFormat("{0}: WriteRequestPort({2}, {3}, {4}, {5}) returned {1} {6}", name, retv, messageID, offset, lenght, pBuf[0].ToString("X2"), (retv != 0) ? "!" : "");
|
rfidDataLogger.InfoFormat("{0}: WriteRequestPort({2}, {3}, {4}, {5}) returned {1} {6}", name, retv, messageID, offset, length, pBuf[0].ToString("X2"), (retv != 0) ? "!" : "");
|
||||||
else if (lenght == 2)
|
else if (length == 2)
|
||||||
{
|
{
|
||||||
if (messageID == MessageID.Calibration && offset == 2)
|
if (messageID == MessageID.Calibration && offset == 2)
|
||||||
{
|
{
|
||||||
@@ -265,10 +298,10 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
|
|||||||
rfidDataLogger.InfoFormat("{0}: WriteRequestPort(CalLNA={1}) returned {2} {3}", name, calibFactor, retv, (retv != 0) ? "!" : "");
|
rfidDataLogger.InfoFormat("{0}: WriteRequestPort(CalLNA={1}) returned {2} {3}", name, calibFactor, retv, (retv != 0) ? "!" : "");
|
||||||
}
|
}
|
||||||
else
|
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) ? "!" : "");
|
rfidDataLogger.InfoFormat("{0}: WriteRequestPort({2}, {3}, {4}, {5} {6}) returned {1} {7}", name, retv, messageID, offset, length, pBuf[0].ToString("X2"), pBuf[1].ToString("X2"), (retv != 0) ? "!" : "");
|
||||||
}
|
}
|
||||||
else
|
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) ? "!" : "");
|
rfidDataLogger.InfoFormat("{0}: WriteRequestPort({2}, {3}, {4}, {5} {6} ...) returned {1} {7}", name, retv, messageID, offset, length, pBuf[0].ToString("X2"), pBuf[1].ToString("X2"), (retv != 0) ? "!" : "");
|
||||||
|
|
||||||
return retv;
|
return retv;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
|
|||||||
{
|
{
|
||||||
public class CalibrationStruct
|
public class CalibrationStruct
|
||||||
{
|
{
|
||||||
public static readonly int Length = 35;
|
public const int Length = 35;
|
||||||
|
|
||||||
public Byte Version;
|
public Byte Version;
|
||||||
public MeterType MeterType;
|
public MeterType MeterType;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
|
|||||||
{
|
{
|
||||||
public class CalibrationStructV4
|
public class CalibrationStructV4
|
||||||
{
|
{
|
||||||
public static readonly int Length = 37;
|
public const int Length = 37;
|
||||||
|
|
||||||
public Byte Version;
|
public Byte Version;
|
||||||
public MeterType MeterType;
|
public MeterType MeterType;
|
||||||
|
|||||||
Reference in New Issue
Block a user