当前位置:首页 » 数控仪器 » visa怎么调用dll控制仪器

visa怎么调用dll控制仪器

发布时间: 2021-03-05 23:48:33

① 关于可编程仪器的VISA和SCPI

SCPI是程控仪器来标准命令,它是对器源件的消息进行了标准化,也就是,只要做仪器器件,你就得用SCPI,相当于汇编语言命令(不一定恰当),VISA提供一些可以直接操作硬件的函数,它是以DLL或Lib形式提供,在编程时必须包括visa.h和visa32.h,你直接使用的是VISA库中的函数,SCPI命令又是通过VISA函数Viprintf函数发送出去的,书上讲的太抽象了,不理解。

② 如何在VC编译环境下利用VISA库函数实现动态设置GPIB端口号和检索所连接仪器的端口号

ViRsrc rsrcName,这是第二个参数的格式,可以开辟一个buf来储存这个数据,然后当参数进行传递

③ 如何使用VS2010调用visa进行程控

一、首先在计算机上安装NI提供的驱动库,然后在计算机上找到相应的库文件和头文件

文件目录:C:Program Files (x86)IVI FoundationVISAWinNT

其中lib文件在: libmscvisa32.lib 和ivi.lib

头文件在: include

二、添加库到工程
博主是直接将库文件和对应的头文件复制到了工程目录下,然后在工程中添加了对lib库的引用,vs2010中引用visa库操作如下,

1 菜单 项目—> 属性—>配置属性–>链接器—->输入—附加依赖项, 加入库名,如: visa32.lib;

或是在cpp源文件中用代码#pragma comment(lib,”visa32.lib”)代替. 此时再编译会提示错误:fatal
error LNK1104: 无法打开文件“my_API.lib” , 原因应该是编译器不知道去哪里找我们的这个库,下面就来解决


2 然后给项目添加库文件路径,添加附加库路径:

“项目—>属性—>配置属性—>连接器–>常规–>附加库目录” 点右边的向下箭头,这里添加 我们的库所在的路径.
F:my_programmeiyongPPPP_Decode_ETIM;或 ../../PPPP_Decode_ETIM,
而且经试验测试是以项目文件.vcxproj 所在目录为当前目录,当前以当前目录这个方式设置更好了.这样就好了.

三、在工程中使用visa库
下面的代码中是在VS2010中通过调用visa库发送*IDN?来查询仪器的ID

#include"visa/include/visa.h"
#include"visa/include/ivi.h"
#pragmacomment(lib,"visa32.lib")
#pragmacomment(lib,"ivi.lib")
/*----------------------------------------------------------------------------*/
/*宏定义声明*/
/*----------------------------------------------------------------------------*/
#defineMAX_SCPI_LENGTH255//最大的SCPI命令
#defineDEFAULT_TIMEOUT5000//超时:5000ms
intmain(void)
{
ViStatusnReturnStatus=0;//保存返回数值
ViSessionrmSession=0,pnInstrHandle;
ViUInt32retCnt=0;
ViBytewrtBuf[MAX_SCPI_LENGTH];//写缓冲区
ViByterdBuf[MAX_SCPI_LENGTH];//读缓冲区
intReturn_Count;
nReturnStatus=viOpenDefaultRM(&rmSession);
nReturnStatus=viOpen(rmSession,"TCPIP0::172.141.114.6::5001::SOCKET",VI_NULL,VI_NULL,&pnInstrHandle);
/*-ConfigureVISAFormattedI/O----------------------------------------*/
nReturnStatus=viSetAttribute(pnInstrHandle,VI_ATTR_TMO_VALUE,DEFAULT_TIMEOUT);//设置超时
nReturnStatus=viSetAttribute(pnInstrHandle,VI_ATTR_SUPPRESS_END_EN,VI_FALSE);//不发送终止符
nReturnStatus=viSetAttribute(pnInstrHandle,VI_ATTR_SEND_END_EN,VI_FALSE);//不接收终止符
nReturnStatus=viQueryf(pnInstrHandle,"*IDN? ","%s",rdBuf);
viClose(pnInstrHandle);
viClose(rmSession);
return0;
}

④ 怎么使用VS2010调用visa进行程控

环境配置
系 统 :win8.1 with update
开发环境: VS2010
编程语言: C++

相关知识
SCPI指令
Standard Commands for Programmable Instruments的缩写,即程控仪器(可编程仪器)标准命令集。SCPI 是一种建立在现有标准IEEE488.1 和 IEEE 488.2 基础上,并遵循了IEEE754 标准中浮点运算规则、ISO646 信息交换7 位编码符号(相当于ASCll编程)等多种标准的标准化仪器编程语言。它采用一套树状分层结构的命令集,提出了一个具有普遍性的通用仪器模型,采用面向信号的测量;它的助记符产生规则简单、明确,且易于记忆。
VISA编程接口
NI-VISA(Virtual Instrument Software Architec-ture,以下简称为“VISA”)是美国国家仪器NI(NationalInstrument)公司开发的一种用来与各种仪器总线进行通信的高级应用编程接口。VISA总线I/O软件是一个综合软件包,不受平台、总线和环境的限制,可用来对USB、GPIB、串口、VXI、PXI和以太网系统进行配置、编程和调试。VISA是虚拟仪器系统I/ O接口软件。基于自底向上结构模型的VISA创造了一个统一形式的I/ O控制函数集。一方面,对初学者或是简单任务的设计者来说,VISA提供了简单易用的控制函数集,在应用形式上相当简单;另一方面,对复杂系统的组建者来说,VISA提供了非常强大的仪器控制功能与资源管理。
如何在VS2010中使用visa库
一、首先在计算机上安装NI提供的驱动库,然后在计算机上找到相应的库文件和头文件
文件目录:C:\Program Files (x86)\IVI Foundation\VISA\WinNT
其中lib文件在: lib\msc\visa32.lib 和ivi.lib
头文件在: include
二、添加库到工程
博主是直接将库文件和对应的头文件复制到了工程目录下,然后在工程中添加了对lib库的引用,vs2010中引用visa库操作如下,
1 菜单 项目—> 属性—>配置属性–>链接器—->输入—附加依赖项, 加入库名,如: visa32.lib;
或是在cpp源文件中用代码#pragma comment(lib,”visa32.lib”)代替. 此时再编译会提示错误:fatal error LNK1104: 无法打开文件“my_API.lib” , 原因应该是编译器不知道去哪里找我们的这个库,下面就来解决
2 然后给项目添加库文件路径,添加附加库路径:
“项目—>属性—>配置属性—>连接器–>常规–>附加库目录” 点右边的向下箭头,这里添加 我们的库所在的路径. F:\my_program\meiyong\PPPP_Decode_ETIM;或 ../../PPPP_Decode_ETIM, 而且经试验测试是以项目文件.vcxproj 所在目录为当前目录,当前以当前目录这个方式设置更好了.这样就好了.
三、在工程中使用visa库
下面的代码中是在VS2010中通过调用visa库发送*IDN?来查询仪器的ID
#include "visa/include/visa.h"
#include "visa/include/ivi.h"

#pragma comment(lib,"visa32.lib")
#pragma comment(lib,"ivi.lib")

/*----------------------------------------------------------------------------*/
/* 宏定义声明 */
/*----------------------------------------------------------------------------*/
#define MAX_SCPI_LENGTH 255 // 最大的SCPI命令
#define DEFAULT_TIMEOUT 5000 // 超时:5000ms

int main(void)
{
ViStatus nReturnStatus = 0; // 保存返回数值
ViSession rmSession = 0,pnInstrHandle;
ViUInt32 retCnt = 0;
ViByte wrtBuf[MAX_SCPI_LENGTH]; // 写缓冲区
ViByte rdBuf[MAX_SCPI_LENGTH]; // 读缓冲区
int Return_Count;

nReturnStatus = viOpenDefaultRM (&rmSession);
nReturnStatus = viOpen (rmSession, "TCPIP0::172.141.114.6::5001::SOCKET", VI_NULL, VI_NULL, &pnInstrHandle);

/*- Configure VISA Formatted I/O ----------------------------------------*/
nReturnStatus = viSetAttribute (pnInstrHandle, VI_ATTR_TMO_VALUE, DEFAULT_TIMEOUT); // 设置超时
nReturnStatus = viSetAttribute (pnInstrHandle, VI_ATTR_SUPPRESS_END_EN, VI_FALSE); // 不发送终止符
nReturnStatus = viSetAttribute (pnInstrHandle, VI_ATTR_SEND_END_EN, VI_FALSE); // 不接收终止符

nReturnStatus = viQueryf (pnInstrHandle, "*IDN?\n", "%s", rdBuf);
viClose (pnInstrHandle);
viClose (rmSession);

return 0;
}

⑤ 有没有人用delphi调用过Visa32.dll动态链接库里的函数

试着把visa32.dll与编译完的程序放在一起一起发布试试

⑥ labview8.6 下载了NI visa后怎么设置它控制电脑的某个USB

这个图能看明白否?

详细点说……开始菜单-->NationalInstruments-->labview-->file-->newvi-->然后就是这个图的内容了。专直接用范例查找属器查找usb就能找到对应的范例了。

⑦ 请问vs2012 c++如何调用或添加ni visa,也就是使用visa函数库的C函数。

首先你需要下载ni visa的驱动和编程库,这个可以到美国国家仪器VISA官网下载。回

VISA的实质就是一个标准答的I/O函数库及其相关规范的总称,一般称这个I/O函数库为VISA库。这些库函数用于编写仪器的驱动程序,完成计算机与仪器间的命令和数据传输,以实现对仪器的程控。
对VISA函数的调用一般可分为声明、开启、器件I/O和关闭4部分,
#include “visa.h”
选定编程环境后,首先安装VISA库, 对于32位应用程序,用到的主要文件是visa.dll,visa32.lib,visa.h以及visatype.h等。对于C或C+ +程序,应在程序的开始包含头文件visa.h。visa.h包含VISA库中所有的函数原型及所用常量、错误代码的定义。visa.h中还包含另一头文件visatype.h,visatype.h头文件定义了VISA数据类型,如例中的ViSession、ViUInt32等。
ni新的东西不怎么熟,老的是LIB/dll链接库模式,据说新的有组件模式,这些在VS上面和其它外接库、外接组件使用没有什么不同,链接库就是包含、引用;组件就是注册、导入。

⑧ vc6.0用visa库函数通过网口控制频谱仪和信号源,因为不是安捷伦仪器,需要改变端口号,仪器的

比如你抄用的socket叫袭Winsock1,那你用:
Winsock1.RemotePort = 5001 ‘对方的端口

Winsock1.LocalPort = 5001 ’本地端口

⑨ 怎么用visa提供的函数,比如viScanf,viRead读仪器的测量数据并存入数组

ViSession vi;ViSession defaultRM;
ViString strWRBUF;
double ScanData[6];
long lngRTN;

lngRTN=viOpenDefaultRM(&defaultRM);
if (lngRTN<VI_SUCCESS) {
MessageBox("打开默认资源管理器失败!");
return;
}

lngRTN=viOpen(defaultRM,"AutoTestSystem",0,0,&vi);
if (lngRTN<VI_SUCCESS) {
MessageBox("打开VI出现错误!");
return;
}

strWRBUF="CONF:RES 1000000,(@101:106);:RES:NPLC 2,(@101:106)\n";
viPrintf(vi,strWRBUF);

strWRBUF="ROUT:SCAN (@101:106)\n";
viPrintf(vi,strWRBUF);

strWRBUF="INIT\n"; viPrintf(vi,strWRBUF);
strWRBUF="FETC?\n";

viPrintf(vi,strWRBUF);
viScanf(vi,"%,10lf",ScanData);

ScanData就是你想要的结果了。

⑩ labview里使用外部开发的dll连接一台仪器,由于dll是.net开发的,仪器栏里需要设置仪器的visa字符串名

问你的dll作者,需要用什么样的字符串。

如果他也是用的NI的VISA体系,那就方便了,你在前面板内放置一个“VISA资源名容称”控件并连线即可。该控件位于“新式>>I/O>>VISA资源名称”,“经典”和“银色”的控件里面也有相应的这个控件。
你连接好VISA的设备(通过串口、USB等)之后,控件下拉列表里面点刷新就有了。
该控件可以显示哪些设备存在,并且是否被占用。如果不需要这样的功能,直接连接“COM1”这样的字符串常量也行。当然,串口是自动设置好了别名了的,如果是USB等,就需要按照VISA的格式写,或者去MAX里面设置好别名。

热点内容
线切割怎么导图 发布:2021-03-15 14:26:06 浏览:709
1台皮秒机器多少钱 发布:2021-03-15 14:25:49 浏览:623
焊接法兰如何根据口径配螺栓 发布:2021-03-15 14:24:39 浏览:883
印章雕刻机小型多少钱 发布:2021-03-15 14:22:33 浏览:395
切割机三五零木工貝片多少钱 发布:2021-03-15 14:22:30 浏览:432
加工盗砖片什么榉好 发布:2021-03-15 14:16:57 浏览:320
北洋机器局制造的银元什么样 发布:2021-03-15 14:16:52 浏览:662
未来小七机器人怎么更新 发布:2021-03-15 14:16:33 浏览:622
rexroth加工中心乱刀怎么自动调整 发布:2021-03-15 14:15:05 浏览:450
机械键盘的键帽怎么选 发布:2021-03-15 14:15:02 浏览:506