I would like to control the Z-drive of a Nikon Ti microscope (without PFS) from a home-written program. (The program is in Python, but I don’t mind using other languages if necessary.) I have found and tried using various solutions: directly controlling the (undocumented?) Nikon.TiScope.NikonTi COM object via pywin32, or controlling the Z-drive via Micro-Manager and pymmcore or pycro-manager. In all cases I have found that the control is rather brittle: requests for position change (
MoveAbsolute() on the COM object, or
setPosition() on MMCore) only sometimes result in actual physical motion; even when it does, the position reported back (
Position() on the COM object, or
getPosition() on MMCore) often fails to correctly update (and in any case never includes the “custom” z-offset set on the microscope, although that’s a much less important issue that can be worked around); and, on top of that, the whole process crashes with Windows access violations every so often.
Are these problems that others here have seen before? Does anyone have a solution for more robust control of the Nikon Ti Z-drive?
Thanks in advance,