-
启动多普勒单次扫描(鼠标点击一次):此时多普勒为等待激光器开启状态(waiting for trigger);
-
手动开启激光器,多普勒同步开始采集,直到采集完成(等待一段时间或者脚本检测到完成标志);
-
采集完成后,保存数据(ctrl+c,鼠标点击一次,自动按文件名打开.txt 文件,ctrl+v):此过程中激光器保持开启;
-
多普勒下一次采集前(此时激光器一直开启,因此不能先点击单词扫描),控制振镜偏振激光束(发送串口指令):偏转到新位置后,可以开始采集信号;
-
多普勒开始第二次采集(鼠标点击一次):直到采集完毕,重复上述流程;
-
...
- AHK 作为主控脚本。
- 激光束偏转点阵应该可调,并按一定的逻辑比如蛇形移动。
- 严格控制多普勒采集的信号与位置的对应关系,所以激光激励时间应该大于采集时间。
- MATLAB 脚本必须显式
exit:确保move_galvo_once.m最后一行是exit,否则 AHK 会无限等待 - 串口必须有 Timeout:
set(serialObj, 'Timeout', 2)防止串口读取卡死 - 串口必须清理:
fclose(serialObj)和delete(serialObj)放在finally块中,确保串口不被占用
- ⏱ 采集时间
AcquisitionTime:必须大于多普勒实际采集时间,建议实测后 +500ms 余量 - ⏱ 保存延迟
SaveDelay:如果文件保存慢,适当增加此参数 - ⏱ 串口超时
Timeout:MATLAB 中设为 2 秒,如果振镜响应慢可增加
- 📊 文件命名规范:建议在 AHK 中自动生成带位置编号的文件名(如
data_X10_Y5.txt) - 📊 保存验证:在保存后检查文件是否存在,防止数据丢失
- 📊 扫描日志:建议在 AHK 中记录扫描日志(位置、时间、状态)
- 🐍 奇数行:从左到右(X 递增)
- 🐍 偶数行:从右到左(X 递减)
- 🐍 优势:减少空驶距离,提高扫描效率
-
🐛 单步测试:先用
Ctrl+Alt+S单次扫描,确认每个步骤正常 -
🐛 MATLAB 独立验证:在 MATLAB 命令行手动运行
move_galvo_once,检查串口通信 -
🐛 查看状态文件:如果出错,打开
galvo_status.flag查看错误信息 -
🐛 AHK 日志:ToolTip 会实时显示当前步骤,出错时记录当前位置
-
🛑 紧急停止:
Ctrl+Alt+X会在当前步骤完成后终止循环(不是立即停止) -
⚡ MATLAB 预加载:可以考虑使用 MATLAB Engine for Python 代替
RunWait,避免每次启动 MATLAB