在《使用qt+visa实现程控》中实现了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 <QCoreApplication>
#include "AVSA/AVSA.h"
#include <visa.h> 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();
}

注意

  1. 由于驱动库使用ivi实现,所以在使用visa库中的viQueryf 时需要对句柄ViSession进行转换ViSession viAVSA_Handler = Ivi_IOSession(AVSA_Handler);

  2. 在调用代码时出现错误,During startup program exited with code 0xc0000135,需要将动态库dll文件放到可执行文件目录下才可以

参考

qt调用仪器驱动库dll实现程控的更多相关文章

  1. QT的MYSQL驱动库编译

    QT的MYSQL驱动库编译 需要准备QT的源码Src,此次编译64位 在QTCreator中打开mysql.pro 修改两个pro 文件,下图为改好 1.mysql.pro TARGET = qsql ...

  2. QT调用C#写的Dll

    参见: https://blog.csdn.net/weixin_42420155/article/details/81060945 C#写的dll是没有dllMain入口函数的,是一种中间语言,需要 ...

  3. QT 调用VS2015编写的Dll

    最近在用QT调用VC生成的库,QT使用的是MinGW调试器,出现与动态库不兼容的问题,最后发现QT只能识别VC生成的C格式下的动态库 也就是在导入导出设置时加入extern "C" ...

  4. 在VS2015中用C++编写可被其它语言调用的动态库DLL

    转自:http://blog.csdn.net/songyi160/article/details/50754705 VS2015用C++创建动态库DLL步骤如下: (1)启动VS2015>文件 ...

  5. Qt调用VS生成的dll

      预备知识: 1.如果在没有导入库文件(.lib),而只有头文件(.h)与动态链接库(.dll)时,我们才需要显示调用,如果这三个文件都全的话,我们就可以使用简单方便的隐式调用. 2.通常Windo ...

  6. Qt生成和调用动态库dll,和静态库.a(windows和linux通用)

    系统1:ThinkPad T570.Windows10.QT5.12.2(Qt Creater 4.8.2)一.动态库.dll的创建和调用1.在qtcreater中按如下步骤创建动态库,动态库名为my ...

  7. 6.关于QT中的内存管理,动态的制作,动态库的调用,静态库的制作

     一  QT的内存管理 1  QT中的内存管理是QObject来管理的 2  QT中的内存管理没有cocos2dx中的引用计数 3  组件能够指定父对象 QTimer *timer = QTime ...

  8. Window下 Qt 编译MySQL驱动(居然用到了动态库格式转换工具)

    一步步在Window下开发Qt 今天开始安装MySQL,看了些关于MySQL安装的博文,方法大致相同,但是遇到的细节问题各有不同,或者没有讲全面,下面来说说个人的安装过程及遇到的问题. 1.首先下载, ...

  9. Qt打开外部程序和文件夹需要注意的细节(Qt调用VC写的动态库,VC需要用C的方式输出函数,否则MinGW32编译过程会报错)

    下午写程序中遇到几个小细节,需要在这里记录一下. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 QProcess *process = new QProcess(this ...

随机推荐

  1. Java之基础20160806

    注意这里介绍的JAVA基础是指你对C语言已经比较熟练或者有一定基础了,再学习如下这知识就会比较快. 1.JAVA也是从MAIN开始执行,但是要先定义类,文件名要与类名一致并且类名首字母要大写,同时JA ...

  2. 解决vue路由与锚点冲突

    传统的锚点定位会与vue-router中的路由设置存在冲突,解决方法自定义锚点跳转: html: <ul> <li><a href="" @click ...

  3. C++ Arithmetic Exception

    运算异常错误,比如除零错误,浮点数取余等等.

  4. jQuery技术内幕 深入解析jQuery架构设计与实现原理

    jquery的外衣 jquery是一个轻量级的JS框架 //以下截取自jquery源码片段 (function( window, undefined ) { /* 源码内容 */ })( window ...

  5. bzoj3524/2223 [Poi2014]Couriers

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3524 http://www.lydsy.com/JudgeOnline/problem.ph ...

  6. 【CodeForces】679 A. Bear and Prime 100

    [题目]A. Bear and Prime 100 [题意]有一数字x,每次可询问一个数字y是否x的因子,最后输出数字x是否素数,要求询问次数<=20. [题解]容易发现[2,100]范围内的非 ...

  7. python学习笔记(十一)之序列

    之前学习的列表,元组,字符串都是序列类型,有很多共同特点: 通过索引得到每一个元素,索引从0开始 通过分片的方法得到一个范围的元素的集合 很多通用的操作符(重复操作符,拼接操作符,成员关系操作符) 序 ...

  8. 在Java中,你真的会日期转换吗

    1.什么是SimpleDateFormat 在java doc对SimpleDateFormat的解释如下: SimpleDateFormat is a concrete class for form ...

  9. 机器学习-kNN-数据归一化

    一.为什么需要数据归一化 不同数据之间因为单位不同,导致数值差距十分大,容易导致预测结果被某项数据主导,所以需要进行数据的归一化. 解决方案:将所有数据映射到同一尺度 二.最值归一化 normaliz ...

  10. textarea输入框随内容撑开高度

    原文链接 方法一(jquery): $('textarea').each(function () {  this.setAttribute('style', 'height:' + (this.scr ...