使用qt+visa實現程控


曾經在如何使用VS2010調用visa進行程控中使用vs2010+visa 實現了程控最簡單的Demo,現實現Qt實現visa的Demo

===== 本人誠接各種程控開發項目 =====

軟件環境

  • 系統: windows 10
  • 開發環境: Qt 5.80
  • visa庫版本: visa 6.0

軟件下載

步驟

1. 添加依賴庫

Demo.pro中添加依賴

win32 {
    INCLUDEPATH += "C:\Program Files (x86)\IVI Foundation\VISA\WinNT\Include"
    LIBS += "C:\Program Files (x86)\IVI Foundation\VISA\WinNT\lib\msc\visa32.lib"
}

2. Demo

#include <QCoreApplication>
#include <visa.h>
#include <iostream>
using namespace std;

#define MAX_SCPI_LEN    255
#define DEFAULT_TMO     5000

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    /* Visa Session*/
    ViStatus nRetStatus;
    ViSession rmSession = 0;
    ViSession pInstrHandle;

    /* Visa communicate buffer */
    ViByte wrBuff[MAX_SCPI_LEN];
    ViByte rdBuff[MAX_SCPI_LEN];

    int retCount = 0;

    /* open device and get visa Handle */
    nRetStatus = viOpenDefaultRM( &rmSession);
    nRetStatus = viOpen( rmSession, "TCPIP0::127.0.0.1::5000::SOCKET", VI_NULL, VI_NULL, &pInstrHandle);

    /* set visa Format */
    nRetStatus = viSetAttribute( pInstrHandle, VI_ATTR_TMO_VALUE, DEFAULT_TMO);
    nRetStatus = viSetAttribute( pInstrHandle, VI_ATTR_SUPPRESS_END_EN, VI_FALSE);
    nRetStatus = viSetAttribute( pInstrHandle, VI_ATTR_SEND_END_EN, VI_FALSE);

    /* Query device IDN */
    nRetStatus = viQueryf( pInstrHandle, "*IDN?\n", "%s", rdBuff);

    cout << rdBuff << endl;

    /* Close */
    viClose( pInstrHandle);
    viClose( rmSession);

    return a.exec();
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM