add enderscope stage device adapter#955
Conversation
|
I added this device adapter to the Windows build, removed the CMake file, and did some Claude-assisted cleanup. Can you check that it all still works as intended? Once you let me know, I am ready to merge (also needs to check that it is included in the unix build). |
There was a problem hiding this comment.
Pull request overview
Adds a new Micro-Manager device adapter to control Enderscope/Marlin-compatible motion controllers (3D-printer style) as Micro-Manager XY and Z stage devices over a serial G-code interface.
Changes:
- Introduces
EnderscopeXYStageandEnderscopeZStagedevice implementations using Marlin G-code commands (e.g.,G0,M114,G28,M400,M410). - Adds Windows/Visual Studio project files for the adapter and registers the project in
micromanager.sln. - Adds an adapter-local
Makefile.amand documentation for the new device adapter.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
micromanager.sln |
Registers the new adapter project in the Visual Studio solution (and also adds a new SecretDeviceAdapters project entry). |
DeviceAdapters/EnderscopeStage/README.md |
Documents the adapter behavior, command mapping, and setup notes. |
DeviceAdapters/EnderscopeStage/Makefile.am |
Adds autotools build instructions for the adapter subdirectory (but top-level autotools integration is still missing). |
DeviceAdapters/EnderscopeStage/EnderscopeStage.vcxproj |
Visual Studio project definition for building the adapter on Windows. |
DeviceAdapters/EnderscopeStage/EnderscopeStage.vcxproj.filters |
Visual Studio filters for source/header organization. |
DeviceAdapters/EnderscopeStage/EnderscopeStage.h |
Declares the adapter classes and shared serial/G-code helper methods. |
DeviceAdapters/EnderscopeStage/EnderscopeStage.cpp |
Implements serial transport, G-code command/response handling, and XY/Z stage device behavior. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - Adapter uses synchronous motion (`M400`) and returns `Busy() == false`. | ||
| - `Home()` homes only the axes owned by each device; it never falls back to a | ||
| full `G28` home-all, so the XY device never moves Z and vice versa. | ||
| - To compile in `mmCoreAndDevices`, place this folder under `DeviceAdapters/` and add it to that repository's build configuration (CMake or VS project lists, depending on platform/build system). |
| deviceadapter_LTLIBRARIES = libmmgr_dal_EnderscopeStage.la | ||
|
|
||
| libmmgr_dal_EnderscopeStage_la_SOURCES = \ | ||
| EnderscopeStage.cpp \ | ||
| EnderscopeStage.h |
| const std::string num = line.substr(numberStart, numberEnd - numberStart); | ||
| char* endPtr = 0; | ||
| value = std::strtod(num.c_str(), &endPtr); | ||
| return endPtr != num.c_str(); |
|
Also must have a license. |
|
It would be great if you could have a look at this @mutterer, so that we can merge your code... |
we would like to contribute a device adapter for the Enderscope stage. It should allow to drive any standard 3D printer XY and Z axes.
Jerome.