安捷伦示波器使用说明书_安捷伦labview采集

安捷伦示波器使用说明书_安捷伦labview采集Step1:配置VISA协议。VISA协议是AgilentIOLibraries的一部分,主要包含一个虚拟仪器软件架构VISA(一个比较通用的工业仪器软件架构)和标准控制库SICL.我理解前者相当一个底层架构,后者相当于一个指令集.先配置好VISA,然后通过SICL指令集发命令。直接上例子,简单明了。agilent示波器可以直接用VISA,所以只要在C++项目里进行配置。首先在C++里配…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

Step1:配置VISA协议。

VISA协议是Agilent IO Libraries的一部分, 主要包含一个虚拟仪器软件架构VISA (一个比较通用的工业仪器软件架构) 和标准控制库SICL.我理解前者相当一个底层架构,后者相当于一个指令集.先配置好VISA,然后通过SICL指令集发命令。

直接上例子,简单明了。agilent示波器可以直接用VISA,所以只要在C++项目里进行配置。

首先在C++里配置VISA的库,这里会比较麻烦,需要去网站找下资源和说明。先在库函数里加上VISA的路径如下图,还要在链接器里的附加依赖项加上visa64.lib。

安捷伦示波器使用说明书_安捷伦labview采集

加库函数

安捷伦示波器使用说明书_安捷伦labview采集

在link的附加依赖项里添加visa64.lib

值得一提的是,在配置库函数时,发现库里还包括了NI的库,说明VISA协议也适用于NI仪器。

然后,在c++文件里include “visa.h” 文件,这样就可以使用VISA库了。库里面有很多VISA的数据类型和函数,大多以vi开头,比如ViSession,vistate, viPrintf, viScanf。后两者是最重要的函数,用来向示波器读写命令。比如viPrintf(vi, message); vi是程序里连接示波器的句柄的地址,message是需要发送给示波器的SCIP指令集里的字符串。

之后,在示波器的帮助文件里找到一个地址,名为”USB0::0x0957::0x900B::MY52090114::0::INSTR”。将其宏定义在C++里,

#define VISA_ADDRESS “USB0::0x0957::0x900B::MY52090114::0::INSTR”

用来识别机器。连接方式有好几种,我们选择的是usb端口,所以需要用这个address,其他还有用IP地址等。

Step2: 写代码

在agilent的programme reference帮助文件里可以查询所有的命令集,用来做各种远程操作,我是直接把示波器里的help拷贝出来啦。

安捷伦示波器使用说明书_安捷伦labview采集

我的主要方法是参考aglient的C例程,直接代码复用,非常方便。比如查询仪器是否error的函数代码如下,其中有些QT界面的代码请忽略:

void VISA_Control::check_instrument_errors()

{

char str_err_val[255] = { 0 };

char str_out[800] = “”;

err = viQueryf(vi, “:SYSTem:ERRor? STRing\n”, “%t”, str_err_val);

if (err != VI_SUCCESS) QMessageBox::warning(pParent, “QueryStringFail”, “check_instrument_errors”);

while (strncmp(str_err_val, “0,”, 2) != 0)

{

strcat(str_out, “, “);

strcat(str_out, str_err_val);

err = viQueryf(vi, “:SYSTem:ERRor? STRing\n”, “%t”, str_err_val);

if (err != VI_SUCCESS) QMessageBox::warning(pParent, “QueryStringFail”, “check_instrument_errors”);

}

if (strcmp(str_out, “”) != 0)

{

err = viFlush(vi, VI_READ_BUF);

if (err != VI_SUCCESS) QMessageBox::warning(pParent, “QueryStringFail”, “check_instrument_errors”);

err = viFlush(vi, VI_WRITE_BUF);

if (err != VI_SUCCESS) QMessageBox::warning(pParent, “QueryStringFail”, “check_instrument_errors”);

}

}

利用visa库,我们写了一个VISA_Control.cpp的自用库函数,将功能进一步集成,用来在以后的程序中调用。

Step3: 有些BUG

用C++里的visa函数连接示波器后,示波器的面板按键经常就无法使用。但有时又可以,挺麻烦的。。。因为有些东西的调节程控并不方便,比如信号窗格,时间窗格等。

help例程里操作的存储的指令(writeString 貌似是一些其他平台的语法,只看引号里的内容即可),如

myScope.WriteString “:DISK:CDIRECTORY “”C:\Document and Settings\All Users\Shared Documents\Infiniium\Data”””(设置存储路径),

貌似无效。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/182856.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • spring boot 过滤器_kotlin从入门到进阶实战

    spring boot 过滤器_kotlin从入门到进阶实战过滤器是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改、判断等,把不符合规则的请求在中途拦截或修改。也可以对响应进行过滤,拦截或修改响应。

  • Zxing.jar下载

    Zxing.jar下载版本3.3.3

  • Python暴力激活成功教程wifi密码

    Python暴力激活成功教程wifi密码今天给大家分享一个使用Python激活成功教程WiFi密码的代码,这个代码也是非常简单,这里需要用Python中的pywifi这个库,所以需要在DOS命令下安装这个库,同样使用pipinstallpywifi,很简单就安装成功了,我用的是Python3,所以各位看的时候需要注意这一点。接下来我们一步一步分析主要代码,后面同样附上完整的代码。对了,需要注意一点,就是电脑必须是要用无线网卡的。首先我们…

  • 我的程序员之路

    我的程序员之路

  • OpenCV-Python实战(17)——人脸识别详解

    OpenCV-Python实战(17)——人脸识别详解随着计算机视觉、机器学习和深度学习的发展,人脸识别已经成为一个热门话题。人脸识别具有广泛的应用前景,包括犯罪预防、智能监视以及社交网络。在本文中,我们介绍OpenCV提供的与人脸识别相关的函数,同时还将探索一些用于人脸识别的深度学习方法,这些方法可以轻松集成到计算机视觉项目中以实现高精度的人脸识别。

  • 向量与矩阵的范数(比较1-范数、2-范数、无穷范数、p-范数、L0范数 和 L1范数等)

    阅读文献时,经常看到各种范数,机器学习中的稀疏模型等,也有各种范数,其名称往往容易混淆,例如:L1范数也常称为“1-范数”,但又和真正的1-范数又有很大区别。下面将依次介绍各种范数。1、向量的范数向量的1-范数:;各个元素的绝对值之和;向量的2-范数:;每个元素的平方和再开平方根;向量的无穷范数:p-范数:,其中正整数p≥1,并且有例:…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号