Skip to content

Add SmarAct MCS2 stage and XEM DAC (supersedes #51) - #55

Merged
kalidke merged 22 commits into
mainfrom
smaract-stage
Sep 8, 2026
Merged

Add SmarAct MCS2 stage and XEM DAC (supersedes #51)#55
kalidke merged 22 commits into
mainfrom
smaract-stage

Conversation

@kalidke

@kalidke kalidke commented Sep 8, 2026

Copy link
Copy Markdown
Member

Summary

Supersedes #51 (fork branch without maintainer-edit access), keeping all 19 original commits from @rai-svg47 and @kiwibogo, merged with current main (post-#53 CI) plus one cleanup commit:

  • Restores .vscode/settings.json, dev/Project.toml and Project.toml to main. Test smaract #51 committed a per-user VS Code environment path and a dev/ [sources] entry pointing at one person's Windows checkout, which breaks the dev/ environment for everyone else.
  • Moves src/hardware_implementations/smaract_stage/test_dll.jl to dev/test_smaract_dll.jl. It is a top-level script that ccalls the SDK on include and is not part of the module.
  • move_all! waits for motion completion inside an @async task (deliberate, so a new move can override an in-progress one from the GUI). A thrown error() there is only visible as a failed Task, so the timeout now logs with @error and exits the loop.

What #51 adds (unchanged): SmarAct MCS2 stage (MCS2Stage <: Stage with StageInterface bridge for move/getposition/stopmotion/home/servo), Opal Kelly XEM_DAC module with new OK_XEM wire/trigger helpers, and dev/ test scripts.

Not verifiable here: the hardware paths (Windows DLLs). getrange is not implemented for MCS2Stage and falls to the interface stub.

Verification (local Linux, Julia 1.12.6, xvfb-run)

  • using MicroscopeControl loads; MCS2Stage and XEM_dac are exported.
  • Pkg.test(): 115 passed, 0 failed.

🤖 Generated with Claude Code

https://claude.ai/code/session_011qRMiDoUf47KiBzTKpdnAe

kiwibogo and others added 22 commits May 15, 2026 22:49
the stage is not moving. The maximum closed-loop
frequency is set to 18500 Hz as vendor's software.

Changes to other files so that generic gui can be
used for smaract stage.
The stageinterface_bridge_smaract.jl is added to
bridge the generic gui and smaract stage.
HardwareImplementations.jl now has a function to
create a SmarAct stage, which is used in run.jl
to create a stage and launch the GUI.
Servo for both axes is now enabled. Skips channel
with no positioner.
…c move timeout

- Restore .vscode/settings.json, dev/Project.toml and Project.toml to
  main: the branch had committed a per-user VS Code environment path and
  a dev/ [sources] entry pointing at one person's Windows checkout, which
  breaks the dev/ environment for everyone else.
- Move smaract_stage/test_dll.jl out of src/ to dev/test_smaract_dll.jl;
  it is a top-level script that ccalls the SDK on include and is not
  part of the module.
- move_all! waits for motion inside an @async task, where a thrown
  error() is only visible as a failed Task; log the timeout with @error
  and exit the loop instead.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011qRMiDoUf47KiBzTKpdnAe
@kalidke
kalidke merged commit d8ad158 into main Sep 8, 2026
3 checks passed
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.

3 participants