diff --git a/TBF.sln b/TBF.sln index 6c370f62a..983e14594 100644 --- a/TBF.sln +++ b/TBF.sln @@ -1,6 +1,8 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2012 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.33424.131 +MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TBF", "TBF\TBF.csproj", "{8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}" ProjectSection(ProjectDependencies) = postProject {C8939821-BA5C-4988-A3D0-BF53B74865C7} = {C8939821-BA5C-4988-A3D0-BF53B74865C7} @@ -92,6 +94,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FeatureVectorCalculator", " EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResultsParser", "ResultsParser\ResultsParser.csproj", "{2E08C19B-C0A9-4056-8564-E5B74477959D}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sensus.iPerl.RfidCom", "..\iPerlHead\Sensus.iPerl.RfidCom\Sensus.iPerl.RfidCom.csproj", "{A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -386,8 +390,23 @@ Global {2E08C19B-C0A9-4056-8564-E5B74477959D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {2E08C19B-C0A9-4056-8564-E5B74477959D}.Release|Mixed Platforms.Build.0 = Release|Any CPU {2E08C19B-C0A9-4056-8564-E5B74477959D}.Release|x86.ActiveCfg = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Debug|x86.ActiveCfg = Debug|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Debug|x86.Build.0 = Debug|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Release|Any CPU.Build.0 = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Release|x86.ActiveCfg = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {A7C8EF35-DF72-4DFC-83F7-9641AC1178CF} + EndGlobalSection EndGlobal diff --git a/TBF/Rig/TestMethods/iPerlCommunication/OpticalHeadTest.cs b/TBF/Rig/TestMethods/iPerlCommunication/OpticalHeadTest.cs new file mode 100644 index 000000000..e7c33cf5d --- /dev/null +++ b/TBF/Rig/TestMethods/iPerlCommunication/OpticalHeadTest.cs @@ -0,0 +1,97 @@ +using Sensus.iPerl.RfidCom.Helper; +using Sensus.iPerl.RfidCom.Services; +using Sensus.iPerl.RfidCom.Structures; +using System; +using System.Threading; +using TBF.Rig.TestMethods.iPerlCommunication.iPerlHead; + +namespace TBF.Rig.TestMethods.iPerlCommunication +{ + internal class OpticalHeadTest + { + internal static string OpenSealing(IperlHead iHead) + { + if (RfidCommands.OpenSealing($"COM{iHead.RfidComPortNr}")) return "OK"; + return "Error Open Sealing"; + } + + internal static string ReadRequest_PCB(IperlHead iHead) + { + try + { + byte[] pcb = null; + int readRetVal = iPerlCommunicationForm.ReadRequestPort(iHead, MessageID.Configuration, 16, 5, out pcb); + if (readRetVal == 0) + { + return RfidHelper.HexLiteral2Unsigned(RfidHelper.SwapHexcode(BitConverter.ToString(pcb).Replace("-", string.Empty))).ToString(); + } + return "Error"; + } + catch (Exception ex) + { + return (ex.Message.ToString()); + } + } + + internal static string SetActiveMode(IperlHead iHead) + { + return RfidCommands.SetActiveMode($"COM{iHead.RfidComPortNr}") ? "OK" : "Error Set Active Mode"; + } + + internal static string SetTestMode(IperlHead iHead) + { + return RfidCommands.SetTestMode($"COM{iHead.RfidComPortNr}") ? "OK" : "Error Set Test Mode"; + } + + internal static string TurnOffRadio(IperlHead iHead) + { + try + { + string payload = "03"; + RfidCommunicationService rfidCommunicationService = new RfidCommunicationService { ComPort = $"COM{iHead.RfidComPortNr}", WaitTimeAfterFailure = 2200, PassThroughWaitTime = 1500, MaxRetries = 3, TimeOut = 5000 }; + rfidCommunicationService.RfidWrite(Params.u8_WakeUpInterval, payload); + return rfidCommunicationService.RfidRead(Params.u8_WakeUpInterval).ToString() == payload? "OK" : "Error"; + } + catch (Exception ex) + { + return (ex.Message.ToString()); + } + } + + internal static string SetProductionMode(IperlHead iHead) + { + try + { + string payload = "01"; // 1 set the µC to the production mode, radio should not start + RfidCommunicationService rfidCommunicationService = new RfidCommunicationService { ComPort = $"COM{iHead.RfidComPortNr}", WaitTimeAfterFailure = 2200, PassThroughWaitTime = 1500, MaxRetries = 3, TimeOut = 5000 }; + rfidCommunicationService.RfidWrite(SystemInfo.u8_system_state, payload); + Thread.Sleep(1000); // must be for pass thru params + return rfidCommunicationService.RfidRead(SystemInfo.u8_system_state).ToString() == payload ? "OK" : "Error"; + } + catch (Exception ex) + { + return (ex.Message.ToString()); + } + } + + internal static string WriteRequestPort_u8_Customer_Text(IperlHead iHead) + { + string custText = "FF0123456789ABCDEF"; // Sample text to test write function + try + { + byte[] cmd = RfidHelper.HexStringToByteArray(custText); + if (0 == iPerlCommunicationForm.WriteRequestPort(iHead, MessageID.RadioPassthrough, 0x1899, 9, cmd)) + { + RfidCommunicationService rfidCommunicationService = new RfidCommunicationService { ComPort = $"COM{iHead.RfidComPortNr}", WaitTimeAfterFailure = 2200, PassThroughWaitTime = 1500, MaxRetries = 3, TimeOut = 5000 }; + //rfidCommunicationService.RfidWrite(Params.u8_Customer_Text, custText); + return rfidCommunicationService.RfidRead(Params.u8_Customer_Text).ToString(); + } + } + catch (Exception ex) + { + return (ex.Message.ToString()); + } + return $"Error COM{iHead.RfidComPortNr}"; + } + } +} diff --git a/TBF/Rig/TestMethods/iPerlCommunication/TestMethodCfg.cs b/TBF/Rig/TestMethods/iPerlCommunication/TestMethodCfg.cs index 971cea8b5..adef5b259 100644 --- a/TBF/Rig/TestMethods/iPerlCommunication/TestMethodCfg.cs +++ b/TBF/Rig/TestMethods/iPerlCommunication/TestMethodCfg.cs @@ -22,6 +22,8 @@ namespace TBF.Rig.TestMethods.iPerlCommunication public int CommTimeout; /// Communication timeout in ms (500 .. 5000) public int DelayBetweenRetries; /// Delay between communication retries in ms (0 .. 5000) public int MaxCommRetries; /// Max. number of retries (1 .. 10) + public int WaitTimeAfterFailure; /// Wait time after communication failure in ms + public int PassThroughWaitTime; /// Pass Through wait time for radio parameters in ms public int NrThreads; /// Numbwr of parallel threads (1, 2 or 4) public int IperlCheckErrorsToStop; @@ -59,7 +61,9 @@ namespace TBF.Rig.TestMethods.iPerlCommunication ParentName = string.Empty; CommTimeout = 1800; /// ms MaxCommRetries = 4; - NrThreads = 2; /// 1, 2 or 4 threads + WaitTimeAfterFailure = 2200; + PassThroughWaitTime = 1500; + NrThreads = 2; /// 1, 2 or 4 threads IperlCheckErrorsToStop = 10; TestParams = CreateTestParamsProvider() as iPerlCommunicationParams; diff --git a/TBF/Rig/TestMethods/iPerlCommunication/iPerlCommunicationForm.cs b/TBF/Rig/TestMethods/iPerlCommunication/iPerlCommunicationForm.cs index a560f065d..053420190 100644 --- a/TBF/Rig/TestMethods/iPerlCommunication/iPerlCommunicationForm.cs +++ b/TBF/Rig/TestMethods/iPerlCommunication/iPerlCommunicationForm.cs @@ -19,6 +19,13 @@ using Config.Entities; using TBF.Resources; using TBF.Rig.Sequences; using TBF.Rig.TestMethods.iPerlCommunication.iPerlHead; +using Sensus.iPerl.RfidCom.Exceptions; +using Sensus.iPerl.RfidCom.Helper; +using Sensus.iPerl.RfidCom; +using System.Text.RegularExpressions; +using Sensus.iPerl.RfidCom.Services; +using System.Threading.Tasks; +using Sensus.iPerl.RfidCom.Structures; namespace TBF.Rig.TestMethods.iPerlCommunication { @@ -102,366 +109,14 @@ namespace TBF.Rig.TestMethods.iPerlCommunication public static Color DirNokColor = Color.Red; - #region DLL_Interface - - [DllImport("libRfid1.dll", EntryPoint = "getDllVersion")] static extern unsafe int getDllVersion1(); - [DllImport("libRfid1.dll", EntryPoint = "openPort")] static extern unsafe int openPort1(int comPort); - [DllImport("libRfid1.dll", EntryPoint = "closePort")] static extern unsafe int closePort1(); - [DllImport("libRfid1.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort1(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid1.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort1(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid2.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion2(); - [DllImport("libRfid2.dll", EntryPoint = "openPort")] static extern unsafe int openPort2(int comPort); - [DllImport("libRfid2.dll", EntryPoint = "closePort")] static extern unsafe int closePort2(); - [DllImport("libRfid2.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort2(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid2.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort2(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid3.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion3(); - [DllImport("libRfid3.dll", EntryPoint = "openPort")] static extern unsafe int openPort3(int comPort); - [DllImport("libRfid3.dll", EntryPoint = "closePort")] static extern unsafe int closePort3(); - [DllImport("libRfid3.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort3(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid3.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort3(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid4.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion4(); - [DllImport("libRfid4.dll", EntryPoint = "openPort")] static extern unsafe int openPort4(int comPort); - [DllImport("libRfid4.dll", EntryPoint = "closePort")] static extern unsafe int closePort4(); - [DllImport("libRfid4.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort4(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid4.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort4(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid5.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion5(); - [DllImport("libRfid5.dll", EntryPoint = "openPort")] static extern unsafe int openPort5(int comPort); - [DllImport("libRfid5.dll", EntryPoint = "closePort")] static extern unsafe int closePort5(); - [DllImport("libRfid5.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort5(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid5.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort5(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid6.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion6(); - [DllImport("libRfid6.dll", EntryPoint = "openPort")] static extern unsafe int openPort6(int comPort); - [DllImport("libRfid6.dll", EntryPoint = "closePort")] static extern unsafe int closePort6(); - [DllImport("libRfid6.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort6(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid6.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort6(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid7.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion7(); - [DllImport("libRfid7.dll", EntryPoint = "openPort")] static extern unsafe int openPort7(int comPort); - [DllImport("libRfid7.dll", EntryPoint = "closePort")] static extern unsafe int closePort7(); - [DllImport("libRfid7.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort7(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid7.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort7(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid8.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion8(); - [DllImport("libRfid8.dll", EntryPoint = "openPort")] static extern unsafe int openPort8(int comPort); - [DllImport("libRfid8.dll", EntryPoint = "closePort")] static extern unsafe int closePort8(); - [DllImport("libRfid8.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort8(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid8.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort8(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid9.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion9(); - [DllImport("libRfid9.dll", EntryPoint = "openPort")] static extern unsafe int openPort9(int comPort); - [DllImport("libRfid9.dll", EntryPoint = "closePort")] static extern unsafe int closePort9(); - [DllImport("libRfid9.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort9(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid9.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort9(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid10.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion10(); - [DllImport("libRfid10.dll", EntryPoint = "openPort")] static extern unsafe int openPort10(int comPort); - [DllImport("libRfid10.dll", EntryPoint = "closePort")] static extern unsafe int closePort10(); - [DllImport("libRfid10.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort10(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid10.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort10(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid11.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion11(); - [DllImport("libRfid11.dll", EntryPoint = "openPort")] static extern unsafe int openPort11(int comPort); - [DllImport("libRfid11.dll", EntryPoint = "closePort")] static extern unsafe int closePort11(); - [DllImport("libRfid11.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort11(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid11.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort11(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid12.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion12(); - [DllImport("libRfid12.dll", EntryPoint = "openPort")] static extern unsafe int openPort12(int comPort); - [DllImport("libRfid12.dll", EntryPoint = "closePort")] static extern unsafe int closePort12(); - [DllImport("libRfid12.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort12(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid12.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort12(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid13.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion13(); - [DllImport("libRfid13.dll", EntryPoint = "openPort")] static extern unsafe int openPort13(int comPort); - [DllImport("libRfid13.dll", EntryPoint = "closePort")] static extern unsafe int closePort13(); - [DllImport("libRfid13.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort13(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid13.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort13(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid14.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion14(); - [DllImport("libRfid14.dll", EntryPoint = "openPort")] static extern unsafe int openPort14(int comPort); - [DllImport("libRfid14.dll", EntryPoint = "closePort")] static extern unsafe int closePort14(); - [DllImport("libRfid14.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort14(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid14.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort14(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid15.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion15(); - [DllImport("libRfid15.dll", EntryPoint = "openPort")] static extern unsafe int openPort15(int comPort); - [DllImport("libRfid15.dll", EntryPoint = "closePort")] static extern unsafe int closePort15(); - [DllImport("libRfid15.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort15(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid15.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort15(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid16.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion16(); - [DllImport("libRfid16.dll", EntryPoint = "openPort")] static extern unsafe int openPort16(int comPort); - [DllImport("libRfid16.dll", EntryPoint = "closePort")] static extern unsafe int closePort16(); - [DllImport("libRfid16.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort16(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid16.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort16(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid17.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion17(); - [DllImport("libRfid17.dll", EntryPoint = "openPort")] static extern unsafe int openPort17(int comPort); - [DllImport("libRfid17.dll", EntryPoint = "closePort")] static extern unsafe int closePort17(); - [DllImport("libRfid17.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort17(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid17.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort17(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid18.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion18(); - [DllImport("libRfid18.dll", EntryPoint = "openPort")] static extern unsafe int openPort18(int comPort); - [DllImport("libRfid18.dll", EntryPoint = "closePort")] static extern unsafe int closePort18(); - [DllImport("libRfid18.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort18(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid18.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort18(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid19.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion19(); - [DllImport("libRfid19.dll", EntryPoint = "openPort")] static extern unsafe int openPort19(int comPort); - [DllImport("libRfid19.dll", EntryPoint = "closePort")] static extern unsafe int closePort19(); - [DllImport("libRfid19.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort19(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid19.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort19(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid20.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion20(); - [DllImport("libRfid20.dll", EntryPoint = "openPort")] static extern unsafe int openPort20(int comPort); - [DllImport("libRfid20.dll", EntryPoint = "closePort")] static extern unsafe int closePort20(); - [DllImport("libRfid20.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort20(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid20.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort20(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid21.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion21(); - [DllImport("libRfid21.dll", EntryPoint = "openPort")] static extern unsafe int openPort21(int comPort); - [DllImport("libRfid21.dll", EntryPoint = "closePort")] static extern unsafe int closePort21(); - [DllImport("libRfid21.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort21(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid21.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort21(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid22.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion22(); - [DllImport("libRfid22.dll", EntryPoint = "openPort")] static extern unsafe int openPort22(int comPort); - [DllImport("libRfid22.dll", EntryPoint = "closePort")] static extern unsafe int closePort22(); - [DllImport("libRfid22.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort22(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid22.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort22(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid23.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion23(); - [DllImport("libRfid23.dll", EntryPoint = "openPort")] static extern unsafe int openPort23(int comPort); - [DllImport("libRfid23.dll", EntryPoint = "closePort")] static extern unsafe int closePort23(); - [DllImport("libRfid23.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort23(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid23.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort23(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid24.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion24(); - [DllImport("libRfid24.dll", EntryPoint = "openPort")] static extern unsafe int openPort24(int comPort); - [DllImport("libRfid24.dll", EntryPoint = "closePort")] static extern unsafe int closePort24(); - [DllImport("libRfid24.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort24(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid24.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort24(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid25.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion25(); - [DllImport("libRfid25.dll", EntryPoint = "openPort")] static extern unsafe int openPort25(int comPort); - [DllImport("libRfid25.dll", EntryPoint = "closePort")] static extern unsafe int closePort25(); - [DllImport("libRfid25.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort25(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid25.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort25(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid26.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion26(); - [DllImport("libRfid26.dll", EntryPoint = "openPort")] static extern unsafe int openPort26(int comPort); - [DllImport("libRfid26.dll", EntryPoint = "closePort")] static extern unsafe int closePort26(); - [DllImport("libRfid26.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort26(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid26.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort26(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid27.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion27(); - [DllImport("libRfid27.dll", EntryPoint = "openPort")] static extern unsafe int openPort27(int comPort); - [DllImport("libRfid27.dll", EntryPoint = "closePort")] static extern unsafe int closePort27(); - [DllImport("libRfid27.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort27(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid27.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort27(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid28.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion28(); - [DllImport("libRfid28.dll", EntryPoint = "openPort")] static extern unsafe int openPort28(int comPort); - [DllImport("libRfid28.dll", EntryPoint = "closePort")] static extern unsafe int closePort28(); - [DllImport("libRfid28.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort28(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid28.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort28(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid29.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion29(); - [DllImport("libRfid29.dll", EntryPoint = "openPort")] static extern unsafe int openPort29(int comPort); - [DllImport("libRfid29.dll", EntryPoint = "closePort")] static extern unsafe int closePort29(); - [DllImport("libRfid29.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort29(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid29.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort29(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid30.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion30(); - [DllImport("libRfid30.dll", EntryPoint = "openPort")] static extern unsafe int openPort30(int comPort); - [DllImport("libRfid30.dll", EntryPoint = "closePort")] static extern unsafe int closePort30(); - [DllImport("libRfid30.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort30(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid30.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort30(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid31.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion31(); - [DllImport("libRfid31.dll", EntryPoint = "openPort")] static extern unsafe int openPort31(int comPort); - [DllImport("libRfid31.dll", EntryPoint = "closePort")] static extern unsafe int closePort31(); - [DllImport("libRfid31.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort31(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid31.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort31(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid32.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion32(); - [DllImport("libRfid32.dll", EntryPoint = "openPort")] static extern unsafe int openPort32(int comPort); - [DllImport("libRfid32.dll", EntryPoint = "closePort")] static extern unsafe int closePort32(); - [DllImport("libRfid32.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort32(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid32.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort32(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid33.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion33(); - [DllImport("libRfid33.dll", EntryPoint = "openPort")] static extern unsafe int openPort33(int comPort); - [DllImport("libRfid33.dll", EntryPoint = "closePort")] static extern unsafe int closePort33(); - [DllImport("libRfid33.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort33(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid33.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort33(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid34.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion34(); - [DllImport("libRfid34.dll", EntryPoint = "openPort")] static extern unsafe int openPort34(int comPort); - [DllImport("libRfid34.dll", EntryPoint = "closePort")] static extern unsafe int closePort34(); - [DllImport("libRfid34.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort34(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid34.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort34(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid35.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion35(); - [DllImport("libRfid35.dll", EntryPoint = "openPort")] static extern unsafe int openPort35(int comPort); - [DllImport("libRfid35.dll", EntryPoint = "closePort")] static extern unsafe int closePort35(); - [DllImport("libRfid35.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort35(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid35.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort35(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid36.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion36(); - [DllImport("libRfid36.dll", EntryPoint = "openPort")] static extern unsafe int openPort36(int comPort); - [DllImport("libRfid36.dll", EntryPoint = "closePort")] static extern unsafe int closePort36(); - [DllImport("libRfid36.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort36(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid36.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort36(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid37.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion37(); - [DllImport("libRfid37.dll", EntryPoint = "openPort")] static extern unsafe int openPort37(int comPort); - [DllImport("libRfid37.dll", EntryPoint = "closePort")] static extern unsafe int closePort37(); - [DllImport("libRfid37.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort37(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid37.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort37(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid38.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion38(); - [DllImport("libRfid38.dll", EntryPoint = "openPort")] static extern unsafe int openPort38(int comPort); - [DllImport("libRfid38.dll", EntryPoint = "closePort")] static extern unsafe int closePort38(); - [DllImport("libRfid38.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort38(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid38.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort38(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid39.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion39(); - [DllImport("libRfid39.dll", EntryPoint = "openPort")] static extern unsafe int openPort39(int comPort); - [DllImport("libRfid39.dll", EntryPoint = "closePort")] static extern unsafe int closePort39(); - [DllImport("libRfid39.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort39(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid39.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort39(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - [DllImport("libRfid40.dll", EntryPoint = "getDllVersion")] public static extern unsafe int getDllVersion40(); - [DllImport("libRfid40.dll", EntryPoint = "openPort")] static extern unsafe int openPort40(int comPort); - [DllImport("libRfid40.dll", EntryPoint = "closePort")] static extern unsafe int closePort40(); - [DllImport("libRfid40.dll", EntryPoint = "readRequestPort")] static extern unsafe int readRequestPort40(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - [DllImport("libRfid40.dll", EntryPoint = "writeRequestPort")] static extern unsafe int writeRequestPort40(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); - - - /// - /// Wrapper function with safe interface and unsafe body - /// - /// Water meter (iPerlHead) object - /// Value returned by openPort(...) - public static unsafe int OpenPort(IperlHead iperlHead) - { - if (iperlHead.DebugLevel != DebugMode.Normal) return 0; /// No function in debug mode - - switch (iperlHead.Position) - { - default: - case 1: return openPort1(iperlHead.RfidComPortNr); - case 2: return openPort2(iperlHead.RfidComPortNr); - case 3: return openPort3(iperlHead.RfidComPortNr); - case 4: return openPort4(iperlHead.RfidComPortNr); - case 5: return openPort5(iperlHead.RfidComPortNr); - case 6: return openPort6(iperlHead.RfidComPortNr); - case 7: return openPort7(iperlHead.RfidComPortNr); - case 8: return openPort8(iperlHead.RfidComPortNr); - case 9: return openPort9(iperlHead.RfidComPortNr); - case 10: return openPort10(iperlHead.RfidComPortNr); - case 11: return openPort11(iperlHead.RfidComPortNr); - case 12: return openPort12(iperlHead.RfidComPortNr); - case 13: return openPort13(iperlHead.RfidComPortNr); - case 14: return openPort14(iperlHead.RfidComPortNr); - case 15: return openPort15(iperlHead.RfidComPortNr); - case 16: return openPort16(iperlHead.RfidComPortNr); - case 17: return openPort17(iperlHead.RfidComPortNr); - case 18: return openPort18(iperlHead.RfidComPortNr); - case 19: return openPort19(iperlHead.RfidComPortNr); - case 20: return openPort20(iperlHead.RfidComPortNr); - case 21: return openPort21(iperlHead.RfidComPortNr); - case 22: return openPort22(iperlHead.RfidComPortNr); - case 23: return openPort23(iperlHead.RfidComPortNr); - case 24: return openPort24(iperlHead.RfidComPortNr); - case 25: return openPort25(iperlHead.RfidComPortNr); - case 26: return openPort26(iperlHead.RfidComPortNr); - case 27: return openPort27(iperlHead.RfidComPortNr); - case 28: return openPort28(iperlHead.RfidComPortNr); - case 29: return openPort29(iperlHead.RfidComPortNr); - case 30: return openPort30(iperlHead.RfidComPortNr); - case 31: return openPort31(iperlHead.RfidComPortNr); - case 32: return openPort32(iperlHead.RfidComPortNr); - case 33: return openPort33(iperlHead.RfidComPortNr); - case 34: return openPort34(iperlHead.RfidComPortNr); - case 35: return openPort35(iperlHead.RfidComPortNr); - case 36: return openPort36(iperlHead.RfidComPortNr); - case 37: return openPort37(iperlHead.RfidComPortNr); - case 38: return openPort38(iperlHead.RfidComPortNr); - case 39: return openPort39(iperlHead.RfidComPortNr); - case 40: return openPort40(iperlHead.RfidComPortNr); - } - } - - /// - /// Wrapper function with safe interface and unsafe body - /// - /// Water meter (iPerlHead) object - /// Value returned by openPort(...) - public static unsafe int ClosePort(IperlHead iperlHead) - { - if (iperlHead.DebugLevel != DebugMode.Normal) return 0; /// No function in debug mode - - switch (iperlHead.Position) - { - default: - case 1: return closePort1(); - case 2: return closePort2(); - case 3: return closePort3(); - case 4: return closePort4(); - case 5: return closePort5(); - case 6: return closePort6(); - case 7: return closePort7(); - case 8: return closePort8(); - case 9: return closePort9(); - case 10: return closePort10(); - case 11: return closePort11(); - case 12: return closePort12(); - case 13: return closePort13(); - case 14: return closePort14(); - case 15: return closePort15(); - case 16: return closePort16(); - case 17: return closePort17(); - case 18: return closePort18(); - case 19: return closePort19(); - case 20: return closePort20(); - case 21: return closePort21(); - case 22: return closePort22(); - case 23: return closePort23(); - case 24: return closePort24(); - case 25: return closePort25(); - case 26: return closePort26(); - case 27: return closePort27(); - case 28: return closePort28(); - case 29: return closePort29(); - case 30: return closePort30(); - case 31: return closePort31(); - case 32: return closePort32(); - case 33: return closePort33(); - case 34: return closePort34(); - case 35: return closePort35(); - case 36: return closePort36(); - case 37: return closePort37(); - case 38: return closePort38(); - case 39: return closePort39(); - case 40: return closePort40(); - } - } - + #region iPerl_Head_RFID_Interface: ReadRequestPort, WriteRequestPort /// /// Wrapper function with safe interface and unsafe body /// /// Water meter (iPerlHead) object /// Value returned by readRequestPort(...) - public static unsafe int ReadRequestPort(IperlHead iperlHead, MessageID messageID, int offset, int length, out byte[] buffer, int timeout) - { + public static int ReadRequestPort(IperlHead iperlHead, MessageID messageID, int offset, int length, out byte[] buffer) + { Thread.Sleep(Math.Max(250, cfg.DelayBetweenRetries)); if (iperlHead.DebugLevel != DebugMode.Normal) @@ -471,23 +126,23 @@ namespace TBF.Rig.TestMethods.iPerlCommunication /// 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 }; + 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 }; + 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 }; + 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 }; + buffer = new byte[2] { 150, 10 }; } else if ((messageID == MessageID.Calibration) && (offset == 34) && (length == 2)) { - buffer = new byte[2] { 150,10 }; + buffer = new byte[2] { 150, 10 }; } else if ((messageID == MessageID.MetrologyMemory) && (offset == Q2CorrFactorsAddr) && (length == 2)) { @@ -501,175 +156,116 @@ namespace TBF.Rig.TestMethods.iPerlCommunication return iperlHead.Name.Equals("iPerl13") ? 2 : 0; /// Simulates an error on position 13 } - buffer = new byte[length]; - byte[] buf = new byte[200]; - /// - fixed (byte* pBuf = buf) - { - int retv; - - switch (iperlHead.Position) + for (int i = 0; i < cfg.MaxCommRetries; i++) + { + using (RfidLogic writer = new RfidLogic($"COM{iperlHead.RfidComPortNr}")) { - default: - case 1: retv = readRequestPort1(messageID, offset, length, pBuf, timeout); break; - case 2: retv = readRequestPort2(messageID, offset, length, pBuf, timeout); break; - case 3: retv = readRequestPort3(messageID, offset, length, pBuf, timeout); break; - case 4: retv = readRequestPort4(messageID, offset, length, pBuf, timeout); break; - case 5: retv = readRequestPort5(messageID, offset, length, pBuf, timeout); break; - case 6: retv = readRequestPort6(messageID, offset, length, pBuf, timeout); break; - case 7: retv = readRequestPort7(messageID, offset, length, pBuf, timeout); break; - case 8: retv = readRequestPort8(messageID, offset, length, pBuf, timeout); break; - case 9: retv = readRequestPort9(messageID, offset, length, pBuf, timeout); break; - case 10: retv = readRequestPort10(messageID, offset, length, pBuf, timeout); break; - case 11: retv = readRequestPort11(messageID, offset, length, pBuf, timeout); break; - case 12: retv = readRequestPort12(messageID, offset, length, pBuf, timeout); break; - case 13: retv = readRequestPort13(messageID, offset, length, pBuf, timeout); break; - case 14: retv = readRequestPort14(messageID, offset, length, pBuf, timeout); break; - case 15: retv = readRequestPort15(messageID, offset, length, pBuf, timeout); break; - case 16: retv = readRequestPort16(messageID, offset, length, pBuf, timeout); break; - case 17: retv = readRequestPort17(messageID, offset, length, pBuf, timeout); break; - case 18: retv = readRequestPort18(messageID, offset, length, pBuf, timeout); break; - case 19: retv = readRequestPort19(messageID, offset, length, pBuf, timeout); break; - case 20: retv = readRequestPort20(messageID, offset, length, pBuf, timeout); break; - case 21: retv = readRequestPort21(messageID, offset, length, pBuf, timeout); break; - case 22: retv = readRequestPort22(messageID, offset, length, pBuf, timeout); break; - case 23: retv = readRequestPort23(messageID, offset, length, pBuf, timeout); break; - case 24: retv = readRequestPort24(messageID, offset, length, pBuf, timeout); break; - case 25: retv = readRequestPort25(messageID, offset, length, pBuf, timeout); break; - case 26: retv = readRequestPort26(messageID, offset, length, pBuf, timeout); break; - case 27: retv = readRequestPort27(messageID, offset, length, pBuf, timeout); break; - case 28: retv = readRequestPort28(messageID, offset, length, pBuf, timeout); break; - case 29: retv = readRequestPort29(messageID, offset, length, pBuf, timeout); break; - case 30: retv = readRequestPort30(messageID, offset, length, pBuf, timeout); break; - case 31: retv = readRequestPort31(messageID, offset, length, pBuf, timeout); break; - case 32: retv = readRequestPort32(messageID, offset, length, pBuf, timeout); break; - case 33: retv = readRequestPort33(messageID, offset, length, pBuf, timeout); break; - case 34: retv = readRequestPort34(messageID, offset, length, pBuf, timeout); break; - case 35: retv = readRequestPort35(messageID, offset, length, pBuf, timeout); break; - case 36: retv = readRequestPort36(messageID, offset, length, pBuf, timeout); break; - case 37: retv = readRequestPort37(messageID, offset, length, pBuf, timeout); break; - case 38: retv = readRequestPort38(messageID, offset, length, pBuf, timeout); break; - case 39: retv = readRequestPort39(messageID, offset, length, pBuf, timeout); break; - case 40: retv = readRequestPort40(messageID, offset, length, pBuf, timeout); break; + try + { + byte[] response = writer.ReadRequest((byte)messageID, offset, length, cfg.CommTimeout); + string hexString = RfidHelper.ConvertByteArrayToHexString(response); + string swapHexString = RfidHelper.SwapHexcode(hexString); + string decString = RfidHelper.HexLiteral2Unsigned(RfidHelper.SwapHexcode(hexString)).ToString(); + + if (length > 10) + { + //if the result only contains "00"s we are working on the wrong COM port + // or the module just isn't connected + if (Regex.IsMatch(hexString, @"^(00)\1+$")) + { + rfidDataLogger.Error($"COM{iperlHead.RfidComPortNr}: ReadRequestPort ({messageID},...) <- Error: No RFID signal."); + throw new RfidValidationException("Error_Rfid_NoSignal"); + } + + //if the result only contains "03"s the meter did not answer. + // Might be due to the module being positioned incorrectly. + if (Regex.IsMatch(hexString, @"^(03)\1+$")) + { + rfidDataLogger.Error($"COM{iperlHead.RfidComPortNr}: ReadRequestPort ({messageID},...) <- Error: No meter signal."); + throw new RfidValidationException("Error_Rfid_NoAnswerFromMeter"); + } + } + + writer.ClosePort(); + buffer = response; + rfidDataLogger.Info($"{iperlHead.Name} ({iperlHead.SerialNr}): ReadRequestPort(COM{iperlHead.RfidComPortNr},...) returned HEX: {hexString}; SwapHexCodeToDecimal: {decString}"); + return 0; + } + catch (RfidDataNotAvailableException) + { + if (/*RfidHelper.IsPassThrough(messageID)*/ messageID == MessageID.ASICRegisterReadTest || messageID == MessageID.RadioPassthrough) + { + rfidDataLogger.Info($"COM{iperlHead.RfidComPortNr}: ReadRequestPort ({messageID},...) {(i > 0 ? "<- Error: Invalid Pass-Through data." : "<- Info: Wait for Pass-Through data.")}"); + Thread.Sleep(cfg.PassThroughWaitTime); + } + else + { + Thread.Sleep(cfg.WaitTimeAfterFailure); + } + } + catch (RfidValidationException) + { + Thread.Sleep(cfg.WaitTimeAfterFailure); + } + catch (Exception ex) + { + rfidDataLogger.Error($"COM{iperlHead.RfidComPortNr}: ReadRequestPort ({messageID},...) {ex.Message}"); + Thread.Sleep(cfg.WaitTimeAfterFailure); + } } - - for (int i = 0; i < length; i++) buffer[i] = buf[i]; - - /// - /// Logging - /// - string name = string.Format("{0}({1})", iperlHead.Name, iperlHead.SerialNr); - 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()); - 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()); - 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()); - 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])); - 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])); - 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])); - else - rfidDataLogger.InfoFormat("{0}: ReadRequestPort({1}, {2}, {3}, ...) returned {4} {5}", name, messageID, offset, length, retv, (retv != 0) ? "!" : ""); - - return retv; } - } + rfidDataLogger.Error($"RFID reading failed after {cfg.MaxCommRetries} retries: COM{iperlHead.RfidComPortNr}: ReadRequestPort ({messageID},...)"); + log.Error($"RFID reading failed after {cfg.MaxCommRetries} retries: COM{iperlHead.RfidComPortNr}: ReadRequestPort ({messageID},...)"); + buffer = new byte[length]; + return 3; + } - /// - /// Wrapper function with safe interface and unsafe body - /// + /// + /// Wrapper function with safe interface and unsafe body + /// /// Water meter (iPerlHead) object - /// Value returned by writeRequestPort(...) - public static unsafe int WriteRequestPort(IperlHead iperlHead, MessageID messageID, int offset, int length, byte[] buffer, int timeout) - { + /// Value returned by writeRequestPort(...) + public static int WriteRequestPort(IperlHead iperlHead, MessageID messageID, int offset, int length, byte[] buffer) + { Thread.Sleep(Math.Max(250, cfg.DelayBetweenRetries)); if (iperlHead.DebugLevel != DebugMode.Normal) return 0; - fixed (byte* pBuf = buffer) - { - int retv; + RfidLogic writer = new RfidLogic($"COM{iperlHead.RfidComPortNr}"); + string payload = RfidHelper.ConvertByteArrayToHexString(buffer); + //byte messageId = (byte)((int)valueDefinition.MessageType); + //byte[] payloadBytes = RfidHelper.HexStringToByteArray(payload); - switch (iperlHead.Position) + for (var i = 0; i < cfg.MaxCommRetries; i++) + { + try { - default: - case 1: retv = writeRequestPort1(messageID, offset, length, pBuf, timeout); break; - case 2: retv = writeRequestPort2(messageID, offset, length, pBuf, timeout); break; - case 3: retv = writeRequestPort3(messageID, offset, length, pBuf, timeout); break; - case 4: retv = writeRequestPort4(messageID, offset, length, pBuf, timeout); break; - case 5: retv = writeRequestPort5(messageID, offset, length, pBuf, timeout); break; - case 6: retv = writeRequestPort6(messageID, offset, length, pBuf, timeout); break; - case 7: retv = writeRequestPort7(messageID, offset, length, pBuf, timeout); break; - case 8: retv = writeRequestPort8(messageID, offset, length, pBuf, timeout); break; - case 9: retv = writeRequestPort9(messageID, offset, length, pBuf, timeout); break; - case 10: retv = writeRequestPort10(messageID, offset, length, pBuf, timeout); break; - case 11: retv = writeRequestPort11(messageID, offset, length, pBuf, timeout); break; - case 12: retv = writeRequestPort12(messageID, offset, length, pBuf, timeout); break; - case 13: retv = writeRequestPort13(messageID, offset, length, pBuf, timeout); break; - case 14: retv = writeRequestPort14(messageID, offset, length, pBuf, timeout); break; - case 15: retv = writeRequestPort15(messageID, offset, length, pBuf, timeout); break; - case 16: retv = writeRequestPort16(messageID, offset, length, pBuf, timeout); break; - case 17: retv = writeRequestPort17(messageID, offset, length, pBuf, timeout); break; - case 18: retv = writeRequestPort18(messageID, offset, length, pBuf, timeout); break; - case 19: retv = writeRequestPort19(messageID, offset, length, pBuf, timeout); break; - case 20: retv = writeRequestPort20(messageID, offset, length, pBuf, timeout); break; - case 21: retv = writeRequestPort21(messageID, offset, length, pBuf, timeout); break; - case 22: retv = writeRequestPort22(messageID, offset, length, pBuf, timeout); break; - case 23: retv = writeRequestPort23(messageID, offset, length, pBuf, timeout); break; - case 24: retv = writeRequestPort24(messageID, offset, length, pBuf, timeout); break; - case 25: retv = writeRequestPort25(messageID, offset, length, pBuf, timeout); break; - case 26: retv = writeRequestPort26(messageID, offset, length, pBuf, timeout); break; - case 27: retv = writeRequestPort27(messageID, offset, length, pBuf, timeout); break; - case 28: retv = writeRequestPort28(messageID, offset, length, pBuf, timeout); break; - case 29: retv = writeRequestPort29(messageID, offset, length, pBuf, timeout); break; - case 30: retv = writeRequestPort30(messageID, offset, length, pBuf, timeout); break; - case 31: retv = writeRequestPort31(messageID, offset, length, pBuf, timeout); break; - case 32: retv = writeRequestPort32(messageID, offset, length, pBuf, timeout); break; - case 33: retv = writeRequestPort33(messageID, offset, length, pBuf, timeout); break; - case 34: retv = writeRequestPort34(messageID, offset, length, pBuf, timeout); break; - case 35: retv = writeRequestPort35(messageID, offset, length, pBuf, timeout); break; - case 36: retv = writeRequestPort36(messageID, offset, length, pBuf, timeout); break; - case 37: retv = writeRequestPort37(messageID, offset, length, pBuf, timeout); break; - case 38: retv = writeRequestPort38(messageID, offset, length, pBuf, timeout); break; - case 39: retv = writeRequestPort39(messageID, offset, length, pBuf, timeout); break; - case 40: retv = writeRequestPort40(messageID, offset, length, pBuf, timeout); break; + if (writer.ClosePort()) writer.OpenPort(); + writer.WriteRequest((byte)messageID, offset, length, buffer, cfg.CommTimeout, false); + writer.ClosePort(); + rfidDataLogger.InfoFormat($"{iperlHead.Name}({iperlHead.SerialNr},COM{iperlHead.RfidComPortNr}): WriteRequestPort({messageID}, {offset}, {length}, {payload})"); + return 0; } - - /// - /// Logging - /// - string name = string.Format("{0}({1})", iperlHead.Name, iperlHead.SerialNr); - if (length == 1) - rfidDataLogger.InfoFormat("{0}: WriteRequestPort({2}, {3}, {4}, {5}) returned {1} {6}", name, retv, messageID, offset, length, pBuf[0].ToString("X2"), (retv != 0) ? "!" : ""); - else if (length == 2) + catch (Exception ex) { - if (messageID == MessageID.Calibration && offset == 2) - { - UInt16 calibFactor = (UInt16)(pBuf[0] + 256 * pBuf[1]); - rfidDataLogger.InfoFormat("{0}: WriteRequestPort(Cal={1}) returned {2} {3}", name, calibFactor, retv, (retv != 0) ? "!" : ""); - } - else if (messageID == MessageID.Calibration && offset == 34) + rfidDataLogger.Error($"COM{iperlHead.RfidComPortNr}: Error: {ex.Message}"); + Thread.Sleep(cfg.WaitTimeAfterFailure); + if (i > 1) { - UInt16 calibFactor = (UInt16)(pBuf[0] + 256 * pBuf[1]); - rfidDataLogger.InfoFormat("{0}: WriteRequestPort(CalLNA={1}) returned {2} {3}", name, calibFactor, retv, (retv != 0) ? "!" : ""); + rfidDataLogger.Error($"COM{iperlHead.RfidComPortNr}: Reopen the com port."); + writer.ClosePort(); } - else - 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 - 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; } - } - -#endregion DLL_Interface + writer.ClosePort(); + rfidDataLogger.Error($"RFID writing failed after {cfg.MaxCommRetries} retries: COM{iperlHead.RfidComPortNr}: WriteRequestPort ({messageID},...) {System.Text.Encoding.UTF8.GetString(buffer)}"); + log.Error($"RFID writing failed after {cfg.MaxCommRetries} retries: COM{iperlHead.RfidComPortNr}: WriteRequestPort ({messageID},...) {System.Text.Encoding.UTF8.GetString(buffer)}"); + return 2; + } + #endregion iPerl_Head_RFID_Interface: ReadRequestPort, WriteRequestPort - readonly bool checkBoxesEditMode; + readonly bool checkBoxesEditMode; DateTime startTime; int startTimeSec; @@ -732,20 +328,35 @@ namespace TBF.Rig.TestMethods.iPerlCommunication public iPerlCommunicationForm(bool isCheckBoxesEditMode) : this() { + iPerlCommunicationForm.cfg = new TestMethodCfg(null); // default iPerl Head communication params if (isCheckBoxesEditMode) { checkBoxesEditMode = true; saveButton.Visible = true; activityLabel.Text = Strings.Optical_heads; ShuffleTextBoxes(ProcessData.WMsCount, ProcessData.LineSize); + + ContextMenu cm = new ContextMenu(); + cm.MenuItems.Add(NewMenuItem("Read PCB Number" , "ReadPCB")); + cm.MenuItems.Add(NewMenuItem("Enter Test Mode" , "StartTestMode")); + cm.MenuItems.Add(NewMenuItem("Turn Off Test Mode (Enter Active Mode)", "TurnOffTestMode")); + cm.MenuItems.Add(NewMenuItem("Set Production Mode (Radio not start with flow)" , "SetProductionMode")); + cm.MenuItems.Add(NewMenuItem("Turn Off Radio" , "TurnOffRadio")); + if (Users.CurrentUser.AuthorizedAs == AuthorizedAs.PowerUser) + { + //cm.MenuItems.Add(NewMenuItem("Test WriteRequestPort (u8_Customer_Text)", "WriteRequestPort_u8_Customer_Text")); + cm.MenuItems.Add(NewMenuItem("Open sealing", "OpenSealing")); + } + this.ContextMenu = cm; } } + - /// + /// /// Constructor for one iPerlCommunication 'test' /// /// Number of text boxes for serial numbers - public iPerlCommunicationForm(TestMethod testMethod, Test test, iPerlCommunicationParams testParams) + public iPerlCommunicationForm(TestMethod testMethod, Test test, iPerlCommunicationParams testParams) : this(testMethod, new List { test }, new List { testParams }) { } @@ -946,7 +557,6 @@ namespace TBF.Rig.TestMethods.iPerlCommunication ResizeDlgToFitEnabledControls(); } - void ResizeDlgToFitEnabledControls() { int xMax = 0; @@ -1074,7 +684,7 @@ namespace TBF.Rig.TestMethods.iPerlCommunication } - #region Forced close handling + #region Forced close handling public void StartForceCloseHandler() { @@ -1097,7 +707,7 @@ namespace TBF.Rig.TestMethods.iPerlCommunication Close(); } - #endregion + #endregion /// @@ -1353,30 +963,19 @@ namespace TBF.Rig.TestMethods.iPerlCommunication ihead.ConfigStruct = null; /// Clear previous ConfigStruct, avoid reuse of (not anymore valid) PCB Number - if (OpenPort(ihead) != 0) return CommErr.OpenPort; /// Open RFID port - CommErr error = CommErr.Read; int readRetVal = 0; /// Read configuration byte[] config = null; - for (int j = 0; j < cfg.MaxCommRetries; j++) + readRetVal = ReadRequestPort(ihead, MessageID.Configuration, 0, ConfigStruct.Length, out config); + if (readRetVal == 0) { - readRetVal = ReadRequestPort(ihead, MessageID.Configuration, 0, ConfigStruct.Length, out config, cfg.CommTimeout); - if (readRetVal == 0) - { - error = CommErr.None; - ihead.ConfigStruct = ConfigStruct.FromByteArray(config); - resultStr = ihead.ConfigStruct.ToString(1); - break; - } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); + error = CommErr.None; + ihead.ConfigStruct = ConfigStruct.FromByteArray(config); + resultStr = ihead.ConfigStruct.ToString(1); } - ClosePort(ihead); /// Close RFID port - return error + Math.Max(0, Math.Min(readRetVal, 4)); } @@ -1415,8 +1014,6 @@ namespace TBF.Rig.TestMethods.iPerlCommunication } /// Communication necessary - if (OpenPort(ihead) != 0) return CommErr.OpenPort; /// Open RFID port - CommErr error = CommErr.None; if (error==CommErr.None && (ihead.ConfigStruct.TestModeConfig != testModeConfig) && (ihead.ConfigStruct.MeterState != MeterState.Active)) @@ -1424,16 +1021,9 @@ namespace TBF.Rig.TestMethods.iPerlCommunication /// Switch to Active mode in order to change TestModeConfig error = CommErr.CmdActive; byte[] cmd = new byte[1] { (byte)Command.SetActiveMode }; - for (int j = 0; j < cfg.MaxCommRetries; j++) + if (0 == WriteRequestPort(ihead, MessageID.Command, 0, 1, cmd)) { - if (0 == WriteRequestPort(ihead, MessageID.Command, 0, 1, cmd, cfg.CommTimeout)) - { - error = CommErr.None; - break; - } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); + error = CommErr.None; } /// Delay min. 250 ms @@ -1445,17 +1035,10 @@ namespace TBF.Rig.TestMethods.iPerlCommunication /// Change the TestModeConfig if necessary error = CommErr.Write; byte[] tstMdCfg = new byte[1] { testModeConfig }; - for (int j = 0; j < cfg.MaxCommRetries; j++) + if (0 == WriteRequestPort(ihead, MessageID.Configuration, 21, 1, tstMdCfg)) { - if (0 == WriteRequestPort(ihead, MessageID.Configuration, 21, 1, tstMdCfg, cfg.CommTimeout)) - { - ihead.ConfigStruct.Update(21, tstMdCfg); - error = CommErr.None; - break; - } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); + ihead.ConfigStruct.Update(21, tstMdCfg); + error = CommErr.None; } /// Delay min. 250 ms @@ -1467,16 +1050,9 @@ namespace TBF.Rig.TestMethods.iPerlCommunication /// Switch to test mode error = CommErr.CmdTest; byte[] cmd = new byte[1] { (byte)Command.SetTestMode }; - for (int j = 0; j < cfg.MaxCommRetries; j++) + if (0 == WriteRequestPort(ihead, MessageID.Command, 0, 1, cmd)) { - if (0 == WriteRequestPort(ihead, MessageID.Command, 0, 1, cmd, cfg.CommTimeout)) - { - error = CommErr.None; - break; - } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); + error = CommErr.None; } /// Delay min. 250 ms @@ -1489,26 +1065,17 @@ namespace TBF.Rig.TestMethods.iPerlCommunication /// Verify the configuration error = CommErr.Verify; byte[] config = null; - for (int j = 0; j < cfg.MaxCommRetries; j++) + if (0 == ReadRequestPort(ihead, MessageID.Configuration, 0, ConfigStruct.Length, out config)) { - if (0 == ReadRequestPort(ihead, MessageID.Configuration, 0, ConfigStruct.Length, out config, cfg.CommTimeout)) + ihead.ConfigStruct = ConfigStruct.FromByteArray(config); + if ((ihead.ConfigStruct.MeterState == MeterState.Test) && (ihead.ConfigStruct.TestModeConfig == testModeConfig)) { - ihead.ConfigStruct = ConfigStruct.FromByteArray(config); - if ((ihead.ConfigStruct.MeterState == MeterState.Test) && (ihead.ConfigStruct.TestModeConfig == testModeConfig)) - { - error = CommErr.None; - resultStr = ihead.ConfigStruct.ToString(1); - break; - } + error = CommErr.None; + resultStr = ihead.ConfigStruct.ToString(1); } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); } } - ClosePort(ihead); /// Close RFID port - return error; } @@ -1522,22 +1089,13 @@ namespace TBF.Rig.TestMethods.iPerlCommunication /// true on success static CommErr SetActiveMode(int threadId, IperlHead ihead, ref string resultStr) { - if (OpenPort(ihead) != 0) return CommErr.OpenPort; /// Open RFID port - CommErr error = CommErr.CmdActive; /// Switch to active mode byte[] cmd = new byte[1] { (byte)Command.SetActiveMode }; - for (int j = 0; j < cfg.MaxCommRetries; j++) + if (0 == WriteRequestPort(ihead, MessageID.Command, 0, 1, cmd)) { - if (0 == WriteRequestPort(ihead, MessageID.Command, 0, 1, cmd, cfg.CommTimeout)) - { - error = CommErr.None; - break; - } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); + error = CommErr.None; } #if VERIFY_ACTIVE_MODE @@ -1547,25 +1105,18 @@ namespace TBF.Rig.TestMethods.iPerlCommunication /// Read configuration byte[] cfg_0_3 = null; - for (int j = 0; j < cfg.MaxCommRetries; j++) - { if (ihead.ConfigStruct == null) { - if (0 == ReadRequestPort(threadId, ihead, MessageID.Configuration, 0, 4, out cfg_0_3, cfg.CommTimeout)) + if (0 == ReadRequestPort(threadId, ihead, MessageID.Configuration, 0, 4, out cfg_0_3)) { ihead.ConfigStruct.Update(0, cfg_0_3); if (ihead.ConfigStruct.MeterState == MeterState.Active) { error = CommErr.None; resultStr = ihead.ConfigStruct.ToString(1); - break; } } } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); - } } #else if (error == CommErr.None) @@ -1577,8 +1128,6 @@ namespace TBF.Rig.TestMethods.iPerlCommunication } #endif - ClosePort(ihead); /// Close RFID port - return error; } @@ -1593,37 +1142,26 @@ namespace TBF.Rig.TestMethods.iPerlCommunication { if (ihead.CommFailed) return CommErr.CommFailed; - if (OpenPort(ihead) != 0) return CommErr.OpenPort; /// Open RFID port - CommErr error = CommErr.Read; int readRetVal = 0; /// Read calibration byte[] calib = null; - for (int j = 0; j < cfg.MaxCommRetries; j++) + readRetVal = ReadRequestPort(ihead, MessageID.Calibration, 0, CalibrationStruct.Length, out calib); + if (readRetVal == 0) { - readRetVal = ReadRequestPort(ihead, MessageID.Calibration, 0, CalibrationStruct.Length, out calib, cfg.CommTimeout); - if (readRetVal == 0) - { - ihead.CalibrationStruct = CalibrationStruct.FromByteArray(calib); + ihead.CalibrationStruct = CalibrationStruct.FromByteArray(calib); - if (wm.OrigCalibFactor == 0) - { - wm.OrigCalibFactor = ihead.CalibrationStruct.Calibration; - wm.FWVersion = ihead.CalibrationStruct.FWVersionStr(); - } + if (wm.OrigCalibFactor == 0) + { + wm.OrigCalibFactor = ihead.CalibrationStruct.Calibration; + wm.FWVersion = ihead.CalibrationStruct.FWVersionStr(); + } - resultStr = ihead.CalibrationStruct.ToString(); - error = ihead.VerifyIPerlType() ? CommErr.None : CommErr.WrongIPerlType; - break; - } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); + resultStr = ihead.CalibrationStruct.ToString(); + error = ihead.VerifyIPerlType() ? CommErr.None : CommErr.WrongIPerlType; } - ClosePort(ihead); /// Close RFID port - return error + Math.Max(0, Math.Min(readRetVal, 4)); } @@ -1638,38 +1176,27 @@ namespace TBF.Rig.TestMethods.iPerlCommunication { if (ihead.CommFailed) return CommErr.CommFailed; - if (OpenPort(ihead) != 0) return CommErr.OpenPort; /// Open RFID port - CommErr error = CommErr.Read; int readRetVal = 0; /// Read calibration byte[] calib = null; - for (int j = 0; j < cfg.MaxCommRetries; j++) + readRetVal = ReadRequestPort(ihead, MessageID.Calibration, 0, CalibrationStructV4.Length, out calib); + if (readRetVal == 0) { - readRetVal = ReadRequestPort(ihead, MessageID.Calibration, 0, CalibrationStructV4.Length, out calib, cfg.CommTimeout); - if (readRetVal == 0) + ihead.CalibrationStructV4 = CalibrationStructV4.FromByteArray(calib); + + if ((wm.OrigCalibFactor == 0) && (wm.OrigCalibFactorLNA == 0)) { - ihead.CalibrationStructV4 = CalibrationStructV4.FromByteArray(calib); - - if ((wm.OrigCalibFactor == 0) && (wm.OrigCalibFactorLNA == 0)) - { - wm.OrigCalibFactor = ihead.CalibrationStructV4.Calibration; - wm.OrigCalibFactorLNA = ihead.CalibrationStructV4.CalibrationLNA; - wm.FWVersion = ihead.CalibrationStructV4.FWVersionStr(); - } - - resultStr = ihead.CalibrationStructV4.ToString(); - error = ihead.VerifyIPerlType() ? CommErr.None : CommErr.WrongIPerlType; - break; + wm.OrigCalibFactor = ihead.CalibrationStructV4.Calibration; + wm.OrigCalibFactorLNA = ihead.CalibrationStructV4.CalibrationLNA; + wm.FWVersion = ihead.CalibrationStructV4.FWVersionStr(); } - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); + resultStr = ihead.CalibrationStructV4.ToString(); + error = ihead.VerifyIPerlType() ? CommErr.None : CommErr.WrongIPerlType; } - ClosePort(ihead); /// Close RFID port - return error + Math.Max(0, Math.Min(readRetVal, 4)); } @@ -1777,43 +1304,33 @@ namespace TBF.Rig.TestMethods.iPerlCommunication /// /// Start communication with iPerl /// - if (OpenPort(ihead) != 0) return CommErr.OpenPort; /// Open RFID port - CommErr error; byte[] data = new byte[2] { (byte)(newCalibFactor & 0x00FF), (byte)((newCalibFactor >> 8) & 0x00FF) }; - int writeAndVerifyRetries = 0; - do + /// + /// Write the new calibration factor (up to cfg.MaxCommRetries tims) + /// + error = CommErr.Write; + if (0 == WriteRequestPort(ihead, MessageID.Calibration, 2, 2, data)) { /// - /// Write the new calibration factor (up to cfg.MaxCommRetries tims) - /// - error = CommErr.Write; - if (0 == WriteRequestPort(ihead, MessageID.Calibration, 2, 2, data, cfg.CommTimeout)) - { - /// - /// Read and verify the calibration factor - /// - error = CommErr.ReadAfterWrite; - byte[] calib_2_3 = null; - if (0 == ReadRequestPort(ihead, MessageID.Calibration, 2, 2, out calib_2_3, cfg.CommTimeout)) - { - error = CommErr.Verify; - if (calib_2_3 != null && calib_2_3.Length == 2 && data[0] == calib_2_3[0] && data[1] == calib_2_3[1]) - { - error = CommErr.None; - ihead.CalibrationStruct.Update(data, 2); - wm.CalibFactor = newCalibFactor; - resultStr = ihead.CalibrationStruct.ToString(); - break; - } - } + /// Read and verify the calibration factor + /// + error = CommErr.ReadAfterWrite; + byte[] calib_2_3 = null; + if (0 == ReadRequestPort(ihead, MessageID.Calibration, 2, 2, out calib_2_3)) + { + error = CommErr.Verify; + if (calib_2_3 != null && calib_2_3.Length == 2 && data[0] == calib_2_3[0] && data[1] == calib_2_3[1]) + { + error = CommErr.None; + ihead.CalibrationStruct.Update(data, 2); + wm.CalibFactor = newCalibFactor; + resultStr = ihead.CalibrationStruct.ToString(); + } } - - ihead.CalibrationStruct.Update(data, 2); } - while (++writeAndVerifyRetries <= cfg.MaxCommRetries); - ClosePort(ihead); /// Close RFID port + ihead.CalibrationStruct.Update(data, 2); return error; } @@ -1943,59 +1460,41 @@ namespace TBF.Rig.TestMethods.iPerlCommunication /// /// Start communication with iPerl /// - if (OpenPort(ihead) != 0) return CommErr.OpenPort; /// Open RFID port - CommErr error; byte[] data = new byte[2] { (byte)(newCalibFactor & 0x00FF), (byte)((newCalibFactor >> 8) & 0x00FF) }; byte[] dataLNA = new byte[2] { (byte)(newCalibFactorLNA & 0x00FF), (byte)((newCalibFactorLNA >> 8) & 0x00FF) }; - int writeAndVerifyRetries = 0; - do + /// + /// Write the new calibration factor (up to cfg.MaxCommRetries tims) + /// + error = CommErr.Write; + if (0 == WriteRequestPort(ihead, MessageID.Calibration, 2, 2, data) && + 0 == WriteRequestPort(ihead, MessageID.Calibration, 34, 2, dataLNA)) { /// - /// Write the new calibration factor (up to cfg.MaxCommRetries tims) - /// - error = CommErr.Write; - if (0 == WriteRequestPort(ihead, MessageID.Calibration, 2, 2, data, cfg.CommTimeout) && - 0 == WriteRequestPort(ihead, MessageID.Calibration, 34, 2, dataLNA, cfg.CommTimeout)) + /// Read and verify the calibration factor + /// + error = CommErr.ReadAfterWrite; + byte[] calib_2_3 = null; + byte[] calib_34_35 = null; + if (0 == ReadRequestPort(ihead, MessageID.Calibration, 2, 2, out calib_2_3) && + 0 == ReadRequestPort(ihead, MessageID.Calibration, 34, 2, out calib_34_35)) { - /// - /// Read and verify the calibration factor - /// - error = CommErr.ReadAfterWrite; - byte[] calib_2_3 = null; - byte[] calib_34_35 = null; - if (0 == ReadRequestPort(ihead, MessageID.Calibration, 2, 2, out calib_2_3, cfg.CommTimeout) && - 0 == ReadRequestPort(ihead, MessageID.Calibration, 34, 2, out calib_34_35, cfg.CommTimeout)) + error = CommErr.Verify; + if (calib_2_3 != null && calib_2_3.Length == 2 && data[0] == calib_2_3[0] && data[1] == calib_2_3[1] && + calib_34_35 != null && calib_34_35.Length == 2 && dataLNA[0] == calib_34_35[0] && dataLNA[1] == calib_34_35[1]) { - error = CommErr.Verify; - if (calib_2_3 != null && calib_2_3.Length == 2 && data[0] == calib_2_3[0] && data[1] == calib_2_3[1] && - calib_34_35 != null && calib_34_35.Length == 2 && dataLNA[0] == calib_34_35[0] && dataLNA[1] == calib_34_35[1]) - { - error = CommErr.None; - ihead.CalibrationStructV4.Update(data, 2); - ihead.CalibrationStructV4.Update(dataLNA, 34); - wm.CalibFactor = newCalibFactor; - wm.CalibFactorLNA = newCalibFactorLNA; - resultStr = ihead.CalibrationStructV4.ToString(); - break; - } + error = CommErr.None; + ihead.CalibrationStructV4.Update(data, 2); + ihead.CalibrationStructV4.Update(dataLNA, 34); + wm.CalibFactor = newCalibFactor; + wm.CalibFactorLNA = newCalibFactorLNA; + resultStr = ihead.CalibrationStructV4.ToString(); } } - - ihead.CalibrationStructV4.Update(data, 2); - ihead.CalibrationStructV4.Update(dataLNA, 34); - - writeAndVerifyRetries++; - - if ((writeAndVerifyRetries <= cfg.MaxCommRetries) && (cfg.DelayBetweenRetries > 0)) - { - /// Delay between retries - Thread.Sleep(cfg.DelayBetweenRetries); - } } - while (writeAndVerifyRetries <= cfg.MaxCommRetries); - ClosePort(ihead); /// Close RFID port + ihead.CalibrationStructV4.Update(data, 2); + ihead.CalibrationStructV4.Update(dataLNA, 34); return error; } @@ -2049,8 +1548,6 @@ namespace TBF.Rig.TestMethods.iPerlCommunication return CommErr.None; /// No need to update the calibration factor } - if (OpenPort(ihead) != 0) return CommErr.OpenPort; /// Open RFID port - CommErr error = CommErr.Write; /// Determine the new calibration factor @@ -2080,17 +1577,10 @@ namespace TBF.Rig.TestMethods.iPerlCommunication } byte[] data = new byte[2] { (byte)(defaultCalibFactor & 0x00FF), (byte)((defaultCalibFactor >> 8) & 0x00FF) }; - for (int j = 0; j < cfg.MaxCommRetries; j++) + if (0 == WriteRequestPort(ihead, MessageID.Calibration, 2, 2, data)) { - if (0 == WriteRequestPort(ihead, MessageID.Calibration, 2, 2, data, cfg.CommTimeout)) - { - error = CommErr.None; - ihead.CalibrationStruct.Update(data, 2); - break; - } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); + error = CommErr.None; + ihead.CalibrationStruct.Update(data, 2); } if (error == CommErr.None) @@ -2099,23 +1589,14 @@ namespace TBF.Rig.TestMethods.iPerlCommunication /// Read calibration byte[] calib_2_3 = null; - for (int j = 0; j < cfg.MaxCommRetries; j++) + if (0 == ReadRequestPort(ihead, MessageID.Calibration, 2, 2, out calib_2_3)) { - if (0 == ReadRequestPort(ihead, MessageID.Calibration, 2, 2, out calib_2_3, cfg.CommTimeout)) - { - error = CommErr.None; - ihead.CalibrationStruct.Update(calib_2_3, 2); - resultStr = ihead.CalibrationStruct.ToString(); - break; - } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); + error = CommErr.None; + ihead.CalibrationStruct.Update(calib_2_3, 2); + resultStr = ihead.CalibrationStruct.ToString(); } } - ClosePort(ihead); /// Close RFID port - return error; } @@ -2136,8 +1617,6 @@ namespace TBF.Rig.TestMethods.iPerlCommunication return CommErr.None; /// No need to update the calibration factor } - if (OpenPort(ihead) != 0) return CommErr.OpenPort; /// Open RFID port - CommErr error = CommErr.Write; /// Determine the new calibration factor @@ -2167,17 +1646,10 @@ namespace TBF.Rig.TestMethods.iPerlCommunication } byte[] data = new byte[2] { (byte)(defaultCalibFactor & 0x00FF), (byte)((defaultCalibFactor >> 8) & 0x00FF) }; - for (int j = 0; j < cfg.MaxCommRetries; j++) + if (0 == WriteRequestPort(ihead, MessageID.Calibration, 2, 2, data)) { - if (0 == WriteRequestPort(ihead, MessageID.Calibration, 2, 2, data, cfg.CommTimeout)) - { - error = CommErr.None; - ihead.CalibrationStructV4.Update(data, 2); - break; - } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); + error = CommErr.None; + ihead.CalibrationStructV4.Update(data, 2); } if (error == CommErr.None) @@ -2186,23 +1658,14 @@ namespace TBF.Rig.TestMethods.iPerlCommunication /// Read calibration byte[] calib_2_3 = null; - for (int j = 0; j < cfg.MaxCommRetries; j++) + if (0 == ReadRequestPort(ihead, MessageID.Calibration, 2, 2, out calib_2_3)) { - if (0 == ReadRequestPort(ihead, MessageID.Calibration, 2, 2, out calib_2_3, cfg.CommTimeout)) - { - error = CommErr.None; - ihead.CalibrationStructV4.Update(calib_2_3, 2); - resultStr = ihead.CalibrationStructV4.ToString(); - break; - } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); + error = CommErr.None; + ihead.CalibrationStructV4.Update(calib_2_3, 2); + resultStr = ihead.CalibrationStructV4.ToString(); } } - ClosePort(ihead); /// Close RFID port - return error; } @@ -2218,23 +1681,14 @@ namespace TBF.Rig.TestMethods.iPerlCommunication { if (ihead.CommFailed) return CommErr.CommFailed; - if (OpenPort(ihead) != 0) return CommErr.OpenPort; /// Open RFID port - CommErr error = CommErr.Read; /// Write zero Q2 correction byte[] rdData = null; /// - for (int j = 0; j < cfg.MaxCommRetries; j++) + if (0 == ReadRequestPort(ihead, MessageID.MetrologyMemory, Q2CorrFactorsAddr, 2, out rdData)) { - if (0 == ReadRequestPort(ihead, MessageID.MetrologyMemory, Q2CorrFactorsAddr, 2, out rdData, cfg.CommTimeout)) - { - error = CommErr.None; - break; - } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); + error = CommErr.None; } if ((error == CommErr.None) && (rdData != null) && (rdData.Length == 2)) @@ -2244,8 +1698,6 @@ namespace TBF.Rig.TestMethods.iPerlCommunication wm.Q2CorrRL = ihead.Q2CorrRL = (int)((SByte)rdData[1]); } - ClosePort(ihead); /// Close RFID port - return error; } @@ -2328,25 +1780,16 @@ namespace TBF.Rig.TestMethods.iPerlCommunication { if (ihead.CommFailed) return CommErr.CommFailed; - if (OpenPort(ihead) != 0) return CommErr.OpenPort; /// Open RFID port - CommErr error = CommErr.Write; /// Write zero Q2 correction byte[] wrData = new byte[2] { (byte)factorLR, (byte)factorRL }; /// - for (int j = 0; j < cfg.MaxCommRetries; j++) - { - if (0 == WriteRequestPort(ihead, MessageID.MetrologyMemory, Q2CorrFactorsAddr, wrData.Length, wrData, cfg.CommTimeout)) - { - wm.Q2CorrRL = ihead.Q2CorrRL = factorRL; - wm.Q2CorrLR = ihead.Q2CorrLR = factorLR; - error = CommErr.None; - break; - } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); + if (0 == WriteRequestPort(ihead, MessageID.MetrologyMemory, Q2CorrFactorsAddr, wrData.Length, wrData)) + { + wm.Q2CorrRL = ihead.Q2CorrRL = factorRL; + wm.Q2CorrLR = ihead.Q2CorrLR = factorLR; + error = CommErr.None; } /// @@ -2360,19 +1803,12 @@ namespace TBF.Rig.TestMethods.iPerlCommunication /// Read calibration byte[] rdData = null; - for (int j = 0; j < cfg.MaxCommRetries; j++) - { - if ((0 == ReadRequestPort(threadId, ihead, MessageID.MetrologyMemory, Q2CorrFactorsAddr, 2, out rdData, cfg.CommTimeout)) && + if ((0 == ReadRequestPort(threadId, ihead, MessageID.MetrologyMemory, Q2CorrFactorsAddr, 2, out rdData)) && (rdData != null) && (rdData.Length == 2) && (rdData[0] == 0) && (rdData[1] == 0)) { error = CommErr.None; resultStr = string.Format("Q2 correction set to LR={0}, RL={1}", factorLR, factorRL); - break; } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); - } } #else if (error == CommErr.None) @@ -2381,8 +1817,6 @@ namespace TBF.Rig.TestMethods.iPerlCommunication } #endif - ClosePort(ihead); /// Close RFID port - return error; } @@ -2455,23 +1889,14 @@ namespace TBF.Rig.TestMethods.iPerlCommunication { if (ihead.CommFailed) return CommErr.CommFailed; - if (OpenPort(ihead) != 0) return CommErr.OpenPort; /// Open RFID port - CommErr error = CommErr.Write; /// Write zero Q2 correction byte[] wrData = new byte[1] { 0 }; - /// - for (int j = 0; j < cfg.MaxCommRetries; j++) - { - if (0 == WriteRequestPort(ihead, MessageID.MetrologyMemory, Hz2CorrFactorsAddr, wrData.Length, wrData, cfg.CommTimeout)) - { - error = CommErr.None; - break; - } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); + /// + if (0 == WriteRequestPort(ihead, MessageID.MetrologyMemory, Hz2CorrFactorsAddr, wrData.Length, wrData)) + { + error = CommErr.None; } /// @@ -2485,20 +1910,13 @@ namespace TBF.Rig.TestMethods.iPerlCommunication /// Read calibration byte[] rdData = null; - for (int j = 0; j < cfg.MaxCommRetries; j++) - { - if ((0 == ReadRequestPort(threadId, ihead, MessageID.MetrologyMemory, Hz2CorrFactorsAddr, 1, out rdData, cfg.CommTimeout)) && + if ((0 == ReadRequestPort(threadId, ihead, MessageID.MetrologyMemory, Hz2CorrFactorsAddr, 1, out rdData)) && (rdData != null) && (rdData.Length == 2) && (rdData[0] == 0) && (rdData[1] == 0)) { error = CommErr.None; resultStr = "2Hz correction reset to 0"; ihead.Q2CorrectionFactor = 0; - break; } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); - } } #else if (error == CommErr.None) @@ -2508,8 +1926,6 @@ namespace TBF.Rig.TestMethods.iPerlCommunication } #endif - ClosePort(ihead); /// Close RFID port - return error; } @@ -2769,7 +2185,6 @@ namespace TBF.Rig.TestMethods.iPerlCommunication /// if (ihead.CommFailed) return CommErr.CommFailed; - if (OpenPort(ihead) != 0) return CommErr.OpenPort; /// Open RFID port CommErr error = CommErr.Write; if (q2CorrType == Q2CorrType.RL || q2CorrType == Q2CorrType.RL_incl_05 || q2CorrType == Q2CorrType.ConditionalUpdateRL) { @@ -2777,17 +2192,10 @@ namespace TBF.Rig.TestMethods.iPerlCommunication /// Write R-L Q2 correction factor only /// byte[] wrData = new byte[1] { (byte)q2CorrRL }; - for (int j = 0; j < cfg.MaxCommRetries; j++) + if (0 == WriteRequestPort(ihead, MessageID.MetrologyMemory, Q2CorrFactorsAddrRL, wrData.Length, wrData)) { - if (0 == WriteRequestPort(ihead, MessageID.MetrologyMemory, Q2CorrFactorsAddrRL, wrData.Length, wrData, cfg.CommTimeout)) - { - error = CommErr.None; - wm.Q2CorrRL = ihead.Q2CorrRL = q2CorrRL; - break; - } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); + error = CommErr.None; + wm.Q2CorrRL = ihead.Q2CorrRL = q2CorrRL; } } else if (q2CorrType == Q2CorrType.LR || q2CorrType == Q2CorrType.LR_incl_05 || q2CorrType == Q2CorrType.ConditionalUpdateLR) @@ -2796,17 +2204,10 @@ namespace TBF.Rig.TestMethods.iPerlCommunication /// Write L-R Q2 correction factor only /// byte[] wrData = new byte[1] { (byte)q2CorrLR }; - for (int j = 0; j < cfg.MaxCommRetries; j++) + if (0 == WriteRequestPort(ihead, MessageID.MetrologyMemory, Q2CorrFactorsAddrLR, wrData.Length, wrData)) { - if (0 == WriteRequestPort(ihead, MessageID.MetrologyMemory, Q2CorrFactorsAddrLR, wrData.Length, wrData, cfg.CommTimeout)) - { - error = CommErr.None; - wm.Q2CorrLR = ihead.Q2CorrLR = q2CorrLR; - break; - } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); + error = CommErr.None; + wm.Q2CorrLR = ihead.Q2CorrLR = q2CorrLR; } } else @@ -2815,18 +2216,11 @@ namespace TBF.Rig.TestMethods.iPerlCommunication /// Write both Q2 correction factors /// byte[] wrData = new byte[2] { (byte)q2CorrLR, (byte)q2CorrRL }; - for (int j = 0; j < cfg.MaxCommRetries; j++) + if (0 == WriteRequestPort(ihead, MessageID.MetrologyMemory, Q2CorrFactorsAddr, wrData.Length, wrData)) { - if (0 == WriteRequestPort(ihead, MessageID.MetrologyMemory, Q2CorrFactorsAddr, wrData.Length, wrData, cfg.CommTimeout)) - { - error = CommErr.None; - wm.Q2CorrRL = ihead.Q2CorrRL = q2CorrRL; - wm.Q2CorrLR = ihead.Q2CorrLR = q2CorrLR; - break; - } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); + error = CommErr.None; + wm.Q2CorrRL = ihead.Q2CorrRL = q2CorrRL; + wm.Q2CorrLR = ihead.Q2CorrLR = q2CorrLR; } } @@ -2840,9 +2234,7 @@ namespace TBF.Rig.TestMethods.iPerlCommunication /// Read calibration byte[] rdData = null; - for (int j = 0; j < cfg.MaxCommRetries; j++) - { - if ((0 == ReadRequestPort(threadId, ihead, MessageID.MetrologyMemory, Q2CorrFactorsAddr, 2, out rdData, cfg.CommTimeout)) && + if ((0 == ReadRequestPort(threadId, ihead, MessageID.MetrologyMemory, Q2CorrFactorsAddr, 2, out rdData)) && (rdData != null) && (rdData.Length == 2) && (rdData[0] == q2CorrRFlow) && (rdData[1] == q2CorrLFlow)) { error = CommErr.None; @@ -2852,12 +2244,7 @@ namespace TBF.Rig.TestMethods.iPerlCommunication wm.Q2ErrWOCorrection = ihead.Q2ErrorWOCorrection; if (q2CorrType != Q2CorrType.LR) wm.Q2CorrRFlow = ihead.Q2CorrRFlow = (int)(sbyte)q2CorrRFlow; if (q2CorrType != Q2CorrType.RL) wm.Q2CorrLFlow = ihead.Q2CorrLFlow = (int)(sbyte)q2CorrLFlow; - break; } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); - } } #else /// @@ -2887,8 +2274,6 @@ namespace TBF.Rig.TestMethods.iPerlCommunication } #endif - ClosePort(ihead); /// Close RFID port - return error; } @@ -2914,25 +2299,16 @@ namespace TBF.Rig.TestMethods.iPerlCommunication return CommErr.None; } - if (OpenPort(ihead) != 0) return CommErr.OpenPort; /// Open RFID port - CommErr error = CommErr.Write; Byte hz2CorrectionByte = (byte)(hz2CorrectionFactor & 0x000000FF); byte[] wrData = new byte[1] { hz2CorrectionByte }; - /// - for (int j = 0; j < cfg.MaxCommRetries; j++) - { - if (0 == WriteRequestPort(ihead, MessageID.MetrologyMemory, Hz2CorrFactorsAddr, wrData.Length, wrData, cfg.CommTimeout)) - { - error = CommErr.None; - wm.Hz2Correction = ihead.Hz2Correction = hz2CorrectionFactor; - wm.Hz2CorrectionDone = ihead.Hz2CorrectionDone = true; - break; - } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); + /// + if (0 == WriteRequestPort(ihead, MessageID.MetrologyMemory, Hz2CorrFactorsAddr, wrData.Length, wrData)) + { + error = CommErr.None; + wm.Hz2Correction = ihead.Hz2Correction = hz2CorrectionFactor; + wm.Hz2CorrectionDone = ihead.Hz2CorrectionDone = true; } /// @@ -2945,9 +2321,7 @@ namespace TBF.Rig.TestMethods.iPerlCommunication /// Read calibration byte[] rdData = null; - for (int j = 0; j < cfg.MaxCommRetries; j++) - { - if ((0 == ReadRequestPort(wm, MessageID.MetrologyMemory, Hz2CorrFactorsAddr, 1, out rdData, cfg.CommTimeout)) && + if ((0 == ReadRequestPort(wm, MessageID.MetrologyMemory, Hz2CorrFactorsAddr, 1, out rdData)) && (rdData != null) && (rdData.Length == 2) && (rdData[0] == hz2CorrectionByte)) { error = CommErr.None; @@ -2956,12 +2330,7 @@ namespace TBF.Rig.TestMethods.iPerlCommunication wm.Hz2Correction = ihead.Hz2CorrectionFactor = hz2CorrectionFactor; wm.Diff2Hz8Hz = ihead.Diff2Hz8Hz; wm.Hz2CorrectionDone = ihead.Hz2CorrectionDone; - break; } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); - } } #else if (error == CommErr.None) @@ -2974,8 +2343,6 @@ namespace TBF.Rig.TestMethods.iPerlCommunication } #endif - ClosePort(ihead); /// Close RFID port - return error; } @@ -2991,8 +2358,6 @@ namespace TBF.Rig.TestMethods.iPerlCommunication { if (ihead.CommFailed) return CommErr.CommFailed; - if (OpenPort(ihead) != 0) return CommErr.OpenPort; /// Open RFID port - byte arrow = (flowDir == FlowDir.L_R) ? (byte)1 : (byte)2; /// L-R is reverse flow (=1), R-L is forward flow (=2)(default) iPerlDataWrite[] dataToBeWritten = new iPerlDataWrite[] @@ -3015,16 +2380,9 @@ namespace TBF.Rig.TestMethods.iPerlCommunication foreach (var wData in dataToBeWritten) { bool isSuccessfullyWritten = false; - for (int j = 0; j < cfg.MaxCommRetries; j++) + if (0 == WriteRequestPort(ihead, wData.MessageID, wData.Offset, wData.Data.Length, wData.Data)) { - if (0 == WriteRequestPort(ihead, wData.MessageID, wData.Offset, wData.Data.Length, wData.Data, cfg.CommTimeout)) - { - isSuccessfullyWritten = true; - break; - } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); + isSuccessfullyWritten = true; } if (!isSuccessfullyWritten) @@ -3036,8 +2394,6 @@ namespace TBF.Rig.TestMethods.iPerlCommunication mask = (mask << 1); /// Adjust the mask for the next step } - ClosePort(ihead); /// Close RFID port - if (successfyllyWrittenFlags == 0) { /// Success @@ -3067,8 +2423,6 @@ namespace TBF.Rig.TestMethods.iPerlCommunication { if (ihead.CommFailed) return CommErr.CommFailed; - if (OpenPort(ihead) != 0) return CommErr.OpenPort; /// Open RFID port - Byte testModeConfig = 0xA0; /// Default value /// if (multiTestParams[currentActivityStep].Activity.Length > StartTestingSealedMetersStr.Length) @@ -3096,16 +2450,9 @@ namespace TBF.Rig.TestMethods.iPerlCommunication foreach (var wData in dataToBeWritten) { bool isSuccessfullyWritten = false; - for (int j = 0; j < cfg.MaxCommRetries; j++) + if (0 == WriteRequestPort(ihead, wData.MessageID, wData.Offset, wData.Data.Length, wData.Data)) { - if (0 == WriteRequestPort(ihead, wData.MessageID, wData.Offset, wData.Data.Length, wData.Data, cfg.CommTimeout)) - { - isSuccessfullyWritten = true; - break; - } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); + isSuccessfullyWritten = true; } if (!isSuccessfullyWritten) @@ -3117,8 +2464,6 @@ namespace TBF.Rig.TestMethods.iPerlCommunication mask = (mask << 1); /// Adjust the mask for the next step } - ClosePort(ihead); /// Close RFID port - if (successfyllyWrittenFlags == 0) { /// Success @@ -3148,8 +2493,6 @@ namespace TBF.Rig.TestMethods.iPerlCommunication { if (ihead.CommFailed) return CommErr.CommFailed; - if (OpenPort(ihead) != 0) return CommErr.OpenPort; /// Open RFID port - Byte testModeConfig = (ihead.OrigTestModeConfig != 0) ? ihead.OrigTestModeConfig : (byte)0x80; /// Restore original value (default is 0x80) iPerlDataWrite[] dataToBeWritten = new iPerlDataWrite[] @@ -3165,16 +2508,9 @@ namespace TBF.Rig.TestMethods.iPerlCommunication foreach (var wData in dataToBeWritten) { bool isSuccessfullyWritten = false; - for (int j = 0; j < cfg.MaxCommRetries; j++) + if (0 == WriteRequestPort(ihead, wData.MessageID, wData.Offset, wData.Data.Length, wData.Data)) { - if (0 == WriteRequestPort(ihead, wData.MessageID, wData.Offset, wData.Data.Length, wData.Data, cfg.CommTimeout)) - { - isSuccessfullyWritten = true; - break; - } - - /// Delay between retries - if (cfg.DelayBetweenRetries > 0) Thread.Sleep(cfg.DelayBetweenRetries); + isSuccessfullyWritten = true; } if (!isSuccessfullyWritten) @@ -3186,8 +2522,6 @@ namespace TBF.Rig.TestMethods.iPerlCommunication mask = (mask << 1); /// Adjust the mask for the next step } - ClosePort(ihead); /// Close RFID port - if (successfyllyWrittenFlags == 0) { /// Success @@ -3420,6 +2754,56 @@ namespace TBF.Rig.TestMethods.iPerlCommunication UiBridge.Bridge.OnTestCompleted(this, new UiBridge.TestCompletedEventArgs(string.Empty, null)); } + private MenuItem NewMenuItem(string text, string tag) + { + MenuItem menuItem = new MenuItem { Text = text, Tag = tag }; + menuItem.Click += OnClick_Optical_Heads_Settings_Menu; + return menuItem; + } + private void OnClick_Optical_Heads_Settings_Menu(object sender, EventArgs e) + { + MenuItem menuItem = (MenuItem)sender; + activityLabel.Text = menuItem.Text; + int i = 0; + foreach (var iHead in ProcessData.IperlHeads) + { + if (!checkBoxes[i].Checked || i >= ProcessData.WMsCount) + { + if (i < messages.Length) messages[i].Text = ""; + i++; + continue; + } + messages[i].Text = $"COM{iHead.RfidComPortNr}"; + Application.DoEvents(); // Refresh UI + switch (menuItem.Tag) + { + case "ReadPCB": + messages[i].Text = OpticalHeadTest.ReadRequest_PCB(iHead); + break; + case "WriteRequestPort_u8_Customer_Text": + messages[i].Text = OpticalHeadTest.WriteRequestPort_u8_Customer_Text(iHead); + break; + case "OpenSealing": + messages[i].Text = OpticalHeadTest.OpenSealing(iHead); + break; + case "StartTestMode": + messages[i].Text = OpticalHeadTest.SetTestMode(iHead); + break; + case "TurnOffTestMode": + messages[i].Text = OpticalHeadTest.SetActiveMode(iHead); + break; + case "TurnOffRadio": + messages[i].Text = OpticalHeadTest.TurnOffRadio(iHead); + break; + case "SetProductionMode": + messages[i].Text = OpticalHeadTest.SetProductionMode(iHead); + break; + } + i++; + Application.DoEvents(); // Refresh UI + } + } + #region Check boxes edit mode support private void checkBoxImage1_Click(object sender, EventArgs e) { ckbState[ckbIndex[0]] = checkBoxImage1.Checked; } diff --git a/TBF/TBF.csproj b/TBF/TBF.csproj index ccdec60bd..820d0824f 100644 --- a/TBF/TBF.csproj +++ b/TBF/TBF.csproj @@ -44,7 +44,7 @@ 4 true AnyCPU - false + true pdbonly @@ -55,7 +55,7 @@ 4 AnyCPU true - false + true true @@ -66,7 +66,7 @@ prompt MinimumRecommendedRules.ruleset true - false + true bin\x86\Release\ @@ -77,7 +77,7 @@ prompt MinimumRecommendedRules.ruleset true - false + true TBF.Program @@ -1616,6 +1616,7 @@ + @@ -3774,6 +3775,10 @@ + + {a3e14180-7f00-42e5-94a9-8db62ead6ee8} + Sensus.iPerl.RfidCom + {c8939821-ba5c-4988-a3d0-bf53b74865c7} Common