同一类型多ActiveX元素控制Thorlabs压电执行器异常求助
Thorlabs BPC103三通道压电控制器多ActiveX实例控制问题
近几个月一直在处理ActiveX元素相关问题,当前为光学与激光系本科项目开发自定义控制脚本,使用Thorlabs BPC103三通道压电控制器(架构特殊:由通信集线器+三个单通道单元组成,区别于单/双通道的单设备多通道模式),目标是根据电反馈信号自动控制压电执行器,但遇到多实例控制故障:
问题现象
- 单实例控制压电执行器正常;同时创建多个同类型ActiveX实例时,程序直接崩溃/无响应:
- Visual Studio 2022 MFC代码中,移除Piezo2相关逻辑后,标签能正常显示"Worked fine";保留Piezo2代码时窗口直接关闭,无预期输出
- Qt 9.0.1社区版代码中,控制台始终无法输出"Worked fine"
- 压电执行器停止主动控制后电压下降,执行器随即回缩;步进电机无此问题
- 尝试过为
EnableHWChannel()指定不同chanID,无效果 - 初步怀疑是多实例访问同一DLL导致,但超出现有编程知识范围
相关代码
Visual Studio MFC代码
void CMFCApplication2Dlg::ClickStarthomingbutton() { Piezo1.StartCtrl(); Piezo2.StartCtrl(); Sleep(2000); Piezo1.EnableHWChannel(0); Piezo2.EnableHWChannel(0); Sleep(2000); Piezo1.Identify(); Piezo2.Identify(); Sleep(2000); Piezo1.DisableHWChannel(0); Piezo2.DisableHWChannel(0); Sleep(2000); Piezo1.StopCtrl(); Piezo2.StopCtrl(); LPCTSTR Name = L"Worked fine"; Caption.put__Value(Name); }
Qt代码
QAxWidget* PiezoX; PiezoX = new QAxWidget(); PiezoX->setControl("{A9BC6065-D4F4-4A77-B42B-215A9D6DF4C6}"); PiezoX->setProperty("HWSerialNum", 91809021); QAxWidget* PiezoY; PiezoY = new QAxWidget(); PiezoY->setControl("{A9BC6065-D4F4-4A77-B42B-215A9D6DF4C6}"); PiezoY->setProperty("HWSerialNum", 91809022); PiezoX -> dynamicCall("StartCtrl"); PiezoY -> dynamicCall("StartCtrl"); QThread::sleep(1); qInfo() << "Worked fine"; PiezoX -> dynamicCall("StopCtrl"); PiezoY -> dynamicCall("StopCtrl");
内容的提问来源于stack exchange,提问作者Kersten Mumme
相关产品推荐
相关产品推荐

