问题描述:当需要同时配置显微镜平台和另外一个运动平台时,使用 Micro-Manager 内置函数 setPosition() 时出现冲突,显示没有设备标签名为空,如下图。
注:内置函数 setPosition() 的使用其实是默认当前的配置平台,所以不需要指定标签(每个连接的设备都有其自身的标签),但是如果有多个平台,那么直接使用此函数时就会出现报错。
解决方案:使用 Micro-Manager 内置函数 setFocusDevice() ,此函数的一个作用是可以将你需要使用的平台置为当前,这样就可以继续使用 setPosition() 函数进行平台的移动命令了。
具体步骤如下:
注:这里默认是 MATLAB 已经配置好了 Micro-Manager,具体配置方法轻参照我的上一篇分享“MATLAB 配置 Micro-Manager”。
1.连接好所有硬件,MATLAB 能够调用 Micro-Manager 内置函数。
2.查看 Micro-Manager 配置窗口,找到需要配置的平台标签,我这里使用的平台是 Nikon Ti-E 显微镜和 PI 控制电机,所以其标签分别为 TIZDrive 和 PIZStage 。
3.平台切换,代码如下。这里显微镜平台具有 x,y 两个自由度,控制电机只有1个自由度。如果不确定当前平台是哪一个,可以使用 getFocusDevice() 函数,此函数可以返回当前平台的标签。
mmc.getFocusDevice() % 检查当前系统平台
mmc.setFocusDevice('TIZDrive') % 调用显微镜平台,标签名为 TIZDrive
mmc.setPosition(10,20) % 移动显微镜平台(x,y)至(10,20)位置
mmc.setFocusDevice('PIZStage') % 调用控制电机平台,标签名为 PIZStage
mmc.setPosition(10) % 控制电机移动10um
具体运行结果如下
经过以上步骤,就可以实现多个平台运动了,如果要配置更多的平台,原理类似,只要有该平台的属性标签,就可以控制其运动。