You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同一类型多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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 06:35:15