在《》中实现了qt调用visa库的简单Demo
本文将尝试使用qt调用仪器驱动库来实现对仪器仪表的程控开发环境
- 系统: windows 10
- 环境: qt 5.80
- 库: visa 16.0 + ivi 16.0
配置过程
驱动库为动态库,主要包含.h
,.lib
,.dll
,则按照调用动态库方式进行尝试
1. 添加依赖项
在.pro
文件中添加以下代码
win32 { INCLUDEPATH += "C:\Program Files (x86)\IVI Foundation\VISA\WinNT\Include" INCLUDEPATH += "C:\Program Files (x86)\IVI Foundation\IVI\Include" LIBS += "C:\Program Files (x86)\IVI Foundation\VISA\WinNT\lib\msc\visa32.lib" LIBS += "C:\Program Files (x86)\IVI Foundation\IVI\Lib\msc\ivi.lib" LIBS += "E:\WorkSpace\qtVisa\Demo\qt_dll_Demo\AVSA\AVSA.lib"}
2. 尝试调用库函数
#include#include "AVSA/AVSA.h"#include int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); ViSession AVSA_Handler; ViByte rdBuff[100]; int retCount = 0; ViStatus status; status = AVSA_init("TCPIP0::127.0.0.1::5000::SOCKET", VI_FALSE, VI_FALSE, &AVSA_Handler); ViSession viAVSA_Handler = Ivi_IOSession(AVSA_Handler); retCount = viQueryf( viAVSA_Handler, "*IDN?\n", "%s", rdBuff); AVSA_close( AVSA_Handler); return a.exec();}
注意
由于驱动库使用ivi实现,所以在使用visa库中的viQueryf 时需要对句柄
ViSession
进行转换ViSession viAVSA_Handler = Ivi_IOSession(AVSA_Handler);
在调用代码时出现错误,During startup program exited with code 0xc0000135,需要将动态库
dll
文件放到可执行文件目录下才可以