- Implement 24-bit counter rollover logic in `PopulateVolume` to normalize and compensate volume values.
- Add `PopulateVolumeRolloverTests_Concept` for thorough validation of rollover scenarios.
- Update project files to include new unit test suite.
- Include clarification comments for volume and timestamp rollover constants in `OptoTelegramRaw`.
- Refactor volume unwrapping logic to handle 24-bit rollover in `OptoTelegramRaw`.
- Add `UpdateFromSmart_VolumeRollover_UnwrapsCorrectly` unit test to validate volume rollover behavior.
- Simplify constants and improve normalization logic for volume and timestamp.
Refactor iPerl communication and improve robustness:
- Enhance `OpenOptoSerialPort` with async `Open()` and timeout handling.
- Improve exception handling in `ReadOptoData`, logging timeouts and errors.
- Add null checks for `outPath` components (`FlowMeter`, `Scale`) in `SequenceBase`.
- Update `AssemblyVersion` and `AssemblyFileVersion` to 3.9.2208.1.
Refactor iPerl communication system and add unit tests:
- Update `IperlHead` logic: Fix `VolumeFromSamples` calculation by refining sample filtering and averaging logic.
- Introduce `AutoClickOkAfterDelay` in `CycleBgEnForm` and `TestStartEndForm` for automated dialog interactions.
- Add `OptoTelegramRawTest` and `OptoTelegramRawTest_UpdateFromSmart_Concept` to validate timestamp unwrapping, volume unwrapping, and edge case handling.
- Enhance asynchronous testing and mocking framework for improved stability.
- Update project files to include new test suites and ensure proper build integration.
Add async methods for iPerl communication and update simulation logic:
- Extend `IperlHead` with async methods for reading opto data and volumes (`DataEntry_ReadSerialNumberAsync`, `DataEntry_BeginVolumeAsync`, `DataEntry_EndVolumeAsync`).
- Add support for async serial number reading in `CycleBgEnForm`, implementing real-time updates for `regReaders`.
- Enhance `FlyingStartStopTestOp` and `StandingStartStopTestOp` with simulation timers for processing time (25 seconds).
- Improve exception handling and debug logs across modules (`DataEntry_ReadSerialNumber`, `ReadOptoDataWithTimeoutAsync`).
- Introduce optional `regReaders` parameter to `CycleBgEnForm` constructor for enhanced flexibility in device handling.
- Update `EntryFormNoStartEnd` to conditionally use `regReaders` when initializing `CycleBgEnForm`.
- Add `Set by RegReader` action type to `DEItem`.
Remove `SharedComponents` references and legacy `LiveLogCache` logic:
- Eliminate unused `SharedComponents` references across the solution to streamline dependencies.
- Comment out `LiveLogCache` interactions in multiple modules, transitioning to alternative or undefined logging mechanisms.
- Add optional `regReadersOptional` parameters to `ShowCycleBeginFormOp` methods for improved flexibility.
- Introduce `ITestMethodSmart` interface to support smart reader functionality.
- Add new `LogCacheAppender` configuration to `log4netConfig.xml` for diagnostic use.
- Update project files to remove outdated references and include newly introduced files.
- Replace `throw ex` with detailed `log.Error` messages across `OptoHeadTest` methods.
- Enhance `OpenCycleBeginForm` method: add optional `regReadersOptional` parameter.
- Update `ReadSerialNr` in `iPerlCommunicationForm` to handle failures and include formatted result string.
Add error handling and improve binary read/write logic in `ConfigStruct`. Introduce `ConfigStructTest` for coverage of serialization behaviors. Update project file to include the new test suite.
- Add `ISerialDriver` interface and implement in `SerialDriver`.
- Introduce new methods in `ConfigStruct` for detailed status and active mode strings.
- Update `RadioService` with support for `ISerialDriver`, improved mode-setting logic, and configuration updates.
- Add new constants (`ReadSerialNrStr`, `SetIdleModeStr`) and `ReadSerialNr`/`SetIdleMode` methods in `iPerlCommunicationForm`.
- Extend `RadioServiceTest` with tests for activity and opt test modes.
- Update project files to include `ISerialDriver` and new test suite.
Refactor iPerl communication system:
- Consolidate redundant OptoHead methods.
- Introduce new utilities for diagnostic LED state handling and volume unit conversions.
- Improve FIFO logic in flow direction detection with enhanced regression calculation.
- Add enhanced debugging and logging within communication layers (`SerialDriver` and `RadioService`).
- Update communication protocols for improved response handling and configuration management.
- Replace raw volume with meaningful unit-based values (`RawVolume1to4`).
This change introduces KeyPress event handlers to various UI elements such as comboBoxes and buttons to improve key input handling. The corresponding event handlers were implemented and the UI components were updated accordingly.