QT5.15使用VISA接口连接GPIB设备和USB设备
Posted Snow_2018
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT5.15使用VISA接口连接GPIB设备和USB设备相关的知识,希望对你有一定的参考价值。
本文是之前再外网找到的解决方法,本着分享目的共享出来。
1. 首先安装NI-VISA环境包:点击下载
如果使用GPIB还需要安装GPIB的环境包:点击下载(这个忘记了,似乎不安装也行)
2. 安装完成后,检查目录是否存在
C:\\Program Files (x86)\\IVI Foundation\\VISA\\winnt\\include
C:\\Program Files (x86)\\IVI Foundation\\VISA\\winnt\\lib
3. 在QT工程的.pro文件中加入如下内容。
win32: LIBS += "C:\\Program Files (x86)\\IVI Foundation\\VISA\\WinNT\\lib\\msc\\visa32.lib"
win32: INCLUDEPATH += "C:\\Program Files (x86)\\IVI Foundation\\VISA\\WinNT\\Include"
4. 然后在你自己的文件中添加如下内容。
#include "visa.h"
ViSession osc;
ViSession rscmng;
uint8_t viStatus;
5. 然后使用如下函数进行搜索设备,注意,如果想查找GPIB设备,要替换viFindRsrc里面的字符串。
bool MainWindow::scanGPIB(QStringList *strList)
ViStatus stat = viOpenDefaultRM(&rscmng);
// search for the oscilloscope
ViChar viFound[VI_FIND_BUFLEN];
ViUInt32 nFound;
ViFindList listOfFound;
//如果是查找GPIB设备,则把字符串换成"GPIB?*INSTR"
stat = viFindRsrc(rscmng, (ViString)"USB?*INSTR", &listOfFound, &nFound, viFound);
if(stat != 0)
this->log("未找到设备,请关闭软件后连接设备,然后再打开本软件!");
return false;
// connect to the oscilloscope
stat = viOpen(rscmng, viFound, VI_NULL, VI_NULL, &osc);
// communicate
viPrintf(osc, (ViString)"*IDN?\\n");
char buf[256] = 0;
viScanf(osc,(ViString)"%t",&buf);
qDebug() << buf;
strList->append(viFound);
// close VI sessions
viClose(osc);
return true;
上面的截图就是扫描到设备的ID
6. 写命令到VISA
viPrintf(osc, (ViString)"*RST\\n");
或者
strcpy (stringinput,"*IDN?\\n");
status = viWrite (instr, (ViBuf)stringinput, (ViUInt32)strlen(stringinput), &writeCount);
7. 从VISA读数据
status = viRead (instr, buffer, 100, &retCount);
对于VISA的基本操作,在你安装完VISA环境包之后会有一个Example,例如我的就是:
C:\\Users\\Public\\Documents\\National Instruments\\NI-VISA\\Examples\\C\\USB
以上就是QT+VISA的全部内容了,祝你们调试顺利。
以上是关于QT5.15使用VISA接口连接GPIB设备和USB设备的主要内容,如果未能解决你的问题,请参考以下文章