First post here, so let me know if anything doesn’t follow the rules/guidelines!
I’m currently working on a piece of software in Python that uses Micro-manager (controlled via the Pycromanager package) for stage movement while addressing an external camera through other means. The software loops over the positions in the micro-manager position list and manually fires the external camera at each position and calls some other code there.
To control the stage we have a Prior ProScan III which has X-Y stepper motors and an add-on Z/focus drive. It also receives Z-position information from a Z encoder plugged into the ProScan III. When using the Prior controller software the Z-encoder sends very detailed z-information to the ProScan III controller, allowing for accurate position for focus.
The problem is that when micro-manager moves between different Multistage positions which have different z-values using the position list or the stage movement tool it overwrites the z-encoded position value (we see that the z-position stops fluctuating and loses 1-2 decimals in position). The Z-position from the encoder is (seemingly at least) not overwritten upon starting the Micro-manager software, only upon computerized movement.
Does anyone know from where this “internal” z-position is calculated from and if micro-manager can be forced to keep the z-position coming from ProScan itself?
I also wonder if anyone has used the MMCore serialPort commands? The ProScan III can be addressed via serial port messaging so I was considering whether writing an function to reenable the Encoder (in case Micro-manager somehow switches it off) after each acquisition might be worth a try?
Thankful for any response!