Add HighRes MicroServe driver and captured protocol tests - #1246
Draft
rickwierenga wants to merge 6 commits into
Draft
Add HighRes MicroServe driver and captured protocol tests#1246rickwierenga wants to merge 6 commits into
rickwierenga wants to merge 6 commits into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds direct TCP control of the HighRes MicroServe through
pylabrobot.io.Socket, with fourteen stacker objects, diagnostics, homing, carousel selection, per-operation plate geometry, load/unload preparation, angle-reporting unload, retraction, barcode scans, active counting, stack-height measurement, plate-dimension calculation, manual access, and explicit abort/E-stop recovery. Includes a nested MicroServe guide section, workflow/lifecycle/recovery diagrams, a complete 64-command capability audit, a supervised hardware-validation procedure, API exports, and a device registry entry.Commands match both the echoed command and ACK identifier. Repeated transfer preparation retains ownership and the original reply of the current handoff; interrupted preparations require explicit reconciliation or inspected retraction. Failed measurement and barcode commands retain an unresolved operation across reconnects and block fresh motion. No command is automatically replayed.
Firmware 2.7.0.756 can leave
loaderStatus Extendedset after retraction, so motion guards check the loader home sensors and stacker lock. It also retains mode Ready after manual access; the driver verifies the acknowledged transition to unhomed, unselected, idle, retracted status and records ownership for repeated requests. Load/unload and barcode sequencing use firmware routines; Python manages geometry, state checks, command ownership, and recovery decisions.Hardware validation on MicroServe HRB-2008-10558 covers queries, homing, all fourteen carousel positions, repeated targets, reconnecting, existing geometry write/readback, empty receiving-position preparation/retraction, empty and single-plate stack measurement, retraction after measurement, manual access with repeated requests, return from manual access, and laser on/on/off command exchanges. Loaded unload, angle-variant unload, and load preparation/retraction also passed without external pickup or placement, retaining the single plate and its barcode. Firmware supplied no inline angle report, so the method returns
Noneand preserves that result on repeat rather than substituting a potentially stale cached angle. A barcode scan finished with stacker 12 selected while scanning stacker 5; later operations use fresh status and explicit targets. Ready-state recovery no-ops and clear-abort command acknowledgements were captured with no active fault. Optical laser state has no firmware readback. Empty and single-plate barcode scans, repeated active counts, and cached-count writes also passed. The single-plate test used operator-approved provisional height/pitch with measured thickness, followed by restoration of saved geometry; this does not validate multi-plate or transfer geometry. A separate barcode geometry error is captured and tested as a failure. Exact exchanges are replayed in regression tests.Validation:
test_purge_discards_bytes_held_for_the_next_readtest hangs independently. A follow-up excluding it reached the imposed 180-second limit while running legacy EL406 tests.Draft pending verified plate-transfer geometry, external plate pickup/placement, multi-plate counting/scanning, four-stacker dimension calculation, and physical fault/E-stop recovery. The capability audit identifies unimplemented maintenance/calibration operations, including conflicting axis numbering and unreliable limit reports. Support remains
wip; the available evidence does not establish the registry's ≥90% capability threshold forfull.