qt调用仪器驱动库dll实现程控

在《使用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文件放到可执行文件目录下才可以

参考

转载于:https://www.cnblogs.com/xbotao/p/6636755.html

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值