Hi all,
I've written a custom external motion device plugin (USB/serial connected, our own hardware) based on the official BlankMovement SDK template. The following is confirmed working:
- JogOn/JogOff are called correctly, and we drive real motion via Engine->Axis[a].Jogging
- Notify() receives real events (EX_SPINON, EX_MOTORTUNED, etc.)
- Our device is continuously, actively connected and communicating (verified via constant serial traffic)
Two things are NOT working:
1. Home() and Purge() are NEVER called - not via a real click on "Ref All Home", not via programmatically simulating DoButton(22-25), and not by setting Engine->Homing / Engine->AutoHome to true ourselves.
2. The Motor Tuning screen draws a normalized (0-1) graph and won't accept entered values, but ONLY for axes that are Enabled on the Motor Outputs screen. For a disabled axis, the screen behaves completely normally.
Question: Is there an undocumented step/flag/sequence in InitControl/PostInitControl/Update that we're missing, which is required for Mach3 to treat a plugin as a "fully authorized" real motion device for Home and Motor Tuning purposes? The SmoothStepper FAQ mentions this is related to "continuous communication with the board," but we already have that - and these two features still don't work.
Additional question: Beyond this specific issue - the official BlankMovement SDK template is just a skeleton and doesn't include a full working example where Home/Jog/Motor Tuning genuinely work end to end. Does anyone know of a publicly available, fully working open-source example plugin? A reference like that would have prevented this kind of "undocumented requirement" issue from the start.
Thanks in advance for any pointers.