visa基本函数操作

电源测试visa基本函数操作

1.viOpenDefaultRM();//建立资源管理器
2.viOpen();//根据GPIB地址—与之建立唯一的通讯描述符
3.viSetAttribute();//将描述符解析–不然无法在后面建立通讯
4.viWrite();//对仪器进行写命令—仪器的控制有特殊的字段–主要看什么仪器
5.viRead();//从仪器回读数据–一般是传出函数实现
6.viClose();//关通道----释放些数据–先关描述符–再关资源管理器

QT项目导入visa库的操作

工程下面写入:

	QT       += core gui
	greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

	TARGET = untitled1
	TEMPLATE = app


	SOURCES += main.cpp\
        	oi.cpp

	HEADERS  += oi.h \
    		visa.h

	FORMS    += oi.ui

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

	}

实例

int oi::DCsour(ViSession rmSession,QString dz,QString dop){
    ViStatus nReturnStatus=0;
    ViSession poi;



    QString st1="GPIB0::";
    st1=st1+dz+"::INSTR";
    QByteArray sdd=st1.toLatin1();
    char *stt1=sdd.data();

    nReturnStatus=viOpen(rmSession,(ViRsrc)stt1,VI_NULL,VI_NULL,&poi);

    QString dd="sour:volt ";
        //字符串拼接
    dd=dd+dop;
    QByteArray ser=dd.toLatin1();
        //长度
    char *oopp=ser.data();
    int strlen=dd.length();

    ViBuf vibuff=(ViBuf)oopp;
            nReturnStatus=viSetAttribute(poi,VI_ATTR_TMO_VALUE,VI_TRUE);

            viWrite(poi,(ViBuf)"SOUR:CURR:LIM 50",17,VI_NULL);
            viWrite(poi,(ViBuf)"source:current 50.",18,VI_NULL);
            viWrite(poi,(ViBuf)"SOUR:VOLT:PROT 100.",20,VI_NULL);
            viWrite(poi,vibuff,strlen,VI_NULL);
            viWrite(poi,(ViBuf)"OUTP:STAT ON.",13,VI_NULL);
            viWrite(poi,(ViBuf)"MEAS:VOLT?.",11,VI_NULL);

        viClose(poi);

        return 0;
}


//获取数据
void Widget::tim(){
    QString dz=ui->comboBox->currentText();
    QString st1="GPIB0::";
    st1=st1+dz+"::INSTR";
    QByteArray sdd=st1.toLatin1();
    char *stta1=sdd.data();
    ViStatus nReturnStatus=0;
    ViSession rmSession,poi;
    nReturnStatus=viOpenDefaultRM(&rmSession);
    nReturnStatus=viOpen(rmSession,(ViRsrc)stta1,VI_NULL,VI_NULL,&poi);
    nReturnStatus=viSetAttribute(poi,VI_ATTR_TMO_VALUE,VI_TRUE);
    viWrite(poi,(ViBuf)"MEAS:VOLT?",(ViUInt32)strlen("MEAS:VOLT?"),VI_NULL);
    viRead(poi,(ViBuf)output,1024,VI_NULL);
    viWrite(poi,(ViBuf)"MEASure:Current?",(ViUInt32)strlen("MEASure:Current?"),VI_NULL);
    viRead(poi,(ViBuf)outputcc,1024,VI_NULL);
    viClose(poi);
    viClose(rmSession);
    //float pp=((QString)output)*(outputcc);

    //char*{char数组}--转float---先转QString再toFloat
    QString i1=(QString)output;
    QString i2=(QString)outputcc;
    float pp1=i1.toFloat()*i2.toFloat();

    //QString能直接进行字符串拼接
    //float转QString
    QString pp= QString("%1").arg(pp1);
    ui->label->setText((QString)output);
    ui->label_4->setText((QString)outputcc);
    ui->label_8->setText((QString)pp);
}

QT静态编译

1.将可执exe拷到一个空文件夹下面
2.执行Qt 5.3 for Desktop (MinGW 4.8 32 bit),不同版本名字稍有不同
3.在打开的执行窗口下,cd到你刚才文件夹的目录下
4.执行windeployqt untitled.exe

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值