Skip to content

Conversation

@sam-adaptyv
Copy link

Added a new backend for Liconic STX series of automated incubators. It is compatible with existing incubator backend commands also added a number of new incubator backend commands. Also added a new pice of hardware barcode_scanner which can be optionally initialized with a Liconic incubator to read barcodes with optional read_barcode variables added to current and added incubator commands. Right now the barcode is just printed to terminal as the incubator backed typically only returns the Plate object or nothing. If there was a barcode field added to the Plate resource that seems to be obvious place to return the scanned barcode but that could be done in the future. For now the Keyence BL-1300 barcode scanner is the only model support but other models could be easily integrated. Documentation in user_guide > 01_material-handling > liconic.ipynb is also provided.

sam-adaptyv and others added 11 commits January 28, 2026 10:44
- Add BarcodeScanner frontend that wraps BarcodeScannerBackend
- Export BarcodeScanner and BarcodeScannerError from __init__.py
- Fix type hints in KeyenceBarcodeScannerBackend (callable -> Callable)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Parameter was annotated as str but used as Plate object.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- LiconicBackend now accepts optional BarcodeScanner instance instead of
  creating KeyenceBarcodeScannerBackend internally
- Backend methods set plate.barcode instead of returning barcode strings
- Incubator frontend uses **backend_kwargs pattern to pass read_barcode
  to backend methods without changing signature
- Add Keyence-specific error handling (NG/ERR99) to KeyenceBarcodeScannerBackend
- Update abstract method signatures in IncubatorBackend

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- shaker_status: raise NotImplementedError (missing PLC command)
- get_shaker_speed: add int() conversion before division
- check_shovel_sensor: add missing await on asyncio.sleep

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants