1

1:起因

最近研究Thorlabs公司的一款微动平台BPC303,由于后期实验中需要做到自动化控制磁性材料的移动,所以需要编写程序控制那货!官方给的资料不多,编程环境有三个可选VB,VC++,Labview。出于某些原因,不想使用这些编程环境,还是希望能使用Qt来解决问题。于是乎开始研究Qt下调用ActiveX Control的方法。研究了2天,基本找到方法了,下午把笔记本拿过来,连接到微动上跑跑。

2:注意问题

由于QT5.6 for mingw是使用的32位的编译器,所以在安装Thorlabs这个软件时,也要安装其对应的32位版本,因为32位的程序无法调用64位ActiveX Control(目前是这样的)

3:下面是写的demo程序

新建Qt工程就不说了,在.pro文件中加上一行QT+=axcontainer

#include "mainwindow.h"
#include <QApplication>
#include <QAxWidget>
#include<QDebug>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QAxWidget *motor =new QAxWidget(0,0);
    motor->resize(600,500);
    qDebug()<<"before set control code";
    motor->setControl(QString::fromUtf8("{7EEBDE39-6447-41EC-89D8-94A754092050}"));
    motor->setWindowTitle("the motor of APT");
    const int SN=71864678;
    QVariant qsn(SN);
    qDebug()<<qsn;
    motor->setProperty("HWSerialNum",qsn);
    qDebug()<<motor->property("HWSerialNum");
    qDebug()<<"after set control code";
    motor->dynamicCall("StartCtrl()");
    motor->show();

    return a.exec();
}

效果如下:
图片描述

4:查看AtiveX Control中class id(CLSID)的方法

安装完官方的程序后(在安装路径里面可以看AAA.ocx的文件)
然后使用命令regedit打开注册表,在HKEY_CLASSES_ROOT下面find对应的文件名AAA
这样就可以找到CLSID了


猫哥
305 声望44 粉丝

热衷于研究各类互联网技术,热爱学习,热爱生活!