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了
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。