Skip to content

Latest commit

 

History

History
53 lines (34 loc) · 2.83 KB

File metadata and controls

53 lines (34 loc) · 2.83 KB

具体工作流程 v2 (根据实际情况可以修改)(每一步都有写好的代码,重点是如何写时序流程):

  1. 启动多普勒单次扫描(鼠标点击一次):此时多普勒为等待激光器开启状态(waiting for trigger);

  2. 手动开启激光器,多普勒同步开始采集,直到采集完成(等待一段时间或者脚本检测到完成标志);

  3. 采集完成后,保存数据(ctrl+c,鼠标点击一次,自动按文件名打开.txt 文件,ctrl+v):此过程中激光器保持开启;

  4. 多普勒下一次采集前(此时激光器一直开启,因此不能先点击单词扫描),控制振镜偏振激光束(发送串口指令):偏转到新位置后,可以开始采集信号;

  5. 多普勒开始第二次采集(鼠标点击一次):直到采集完毕,重复上述流程;

  6. ...

⚠️ 注意事项:

  • AHK 作为主控脚本。
  • 激光束偏转点阵应该可调,并按一定的逻辑比如蛇形移动。
  • 严格控制多普勒采集的信号与位置的对应关系,所以激光激励时间应该大于采集时间。

程序防锁死

  • MATLAB 脚本必须显式 exit:确保 move_galvo_once.m 最后一行是 exit,否则 AHK 会无限等待
  • 串口必须有 Timeoutset(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