QT程序通过GPIB-USB-HS转接线控制数字万用表

1、硬件准备

1.1、数字万用表

型号 :Agilent 34401A

前面图示:

在这里插入图片描述

后面图示:有GPIB接口

在这里插入图片描述

1.2、GPIB-USB-HS转接线

在这里插入图片描述

2、GPIB协议基础了解

2.1、引脚

8条数据线:DIO1 ~ DIO8
5条管理线:IFC、ATN、REN、EOI、SRQ
3条交握线:DAV、NRFD、NDAC

感兴趣的话,可以研究这些线是如何控制传输的,Qt程序有封装好的接口,直接用就行。

2.2、特性

  • (1)、GPIB数据传输,并行以BIN(1个BIN为8个bytes)传输数据、串行以byte传输数据,双向异步传输,即发送一条命令,再接收一条命令,不能同时收发。
  • (2)、命令和数据用ASCII表示,可转成ASCLL对应的十六进制。
  • (3)、用双引号(“”)括起来的字符是ASCII字符。
    例如某个机器使用的命令“B CR LF” , 表示ASCII中的值(B,CR,LF),转成十六进制为(0x42,0x0D,0x0A)。
  • (4)、有些机器,"CR LF"表示协议结束符,收发的数据都有,方便解析。

注意:每一种机器使用的命令字段各不相同,需要查看数据手册,但原理是一样的。

2.3、数据解析

例如发送结果和测试数据给某个机器:
“C”命令,
"PF"为的低4位为4个通道的测试结果,0表示PASS,1表示FAIL,当前仅测试1个通道,
byte1 ~ byte8的低4位为测试的32位数据,如下图。

在这里插入图片描述

2.4、数字万用表使用的SCPI协议

用于控制可编程测试测量仪器的标准语法和命令,例如:
1、*IDN?
2、MEAS:VOLT:DC? 10, 0.003

第1条命令得到数字万用表的型号信息
第2条命令量取DC电压

更多的需要查看Agilent 34401A手册

3、软件安装

3.1、安装NI VISA

点 NI官网下载安装包ni-visa_xx.0_online.exe,全部下一步即可,安装好后重启电脑。

可能不会生成桌面快捷方式,去开始菜单可以找到图标

在这里插入图片描述

安装此软件,可得到QT编程需要的外部库,还能初步测试命令的有效性

3.2、安装QT

我使用的版本
在这里插入图片描述

4、NI VISA软件操控数字万用表

4.1、设置数字万用表

GPIB-USB-HS转接线连到电脑,接上数字万用表,通电后打开Power On开关。

如果数字万用表为GPIB模式,设备地址ADDR 22会一闪而过。

在这里插入图片描述

我的数字万用表默认为 RS-232模式,可通过下图的顺序改成GPIB模式。

在这里插入图片描述
用到下图红框中的几个按键,按上图1至5的步骤,设置GPIB模式。

在这里插入图片描述

4.2、NI MAX软件控制

打开NI MAX软件,扫描到了GPIB-USB-HS设备,和数字万用表

在这里插入图片描述

点“与仪器通信”,写入“*IDN?”命令,点查询,得到数字万用表信息

在这里插入图片描述

写入“MEAS:VOLT:DC? 10, 0.003”命令,点查询,得到DC电压0.02

在这里插入图片描述

5、QT编程控制数字万用表

5.1、新建QT工程

新建项目

在这里插入图片描述

下一步选择64-bit的调试配置

在这里插入图片描述

找到NI VISA安装位置的库文件

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

放入工程

在这里插入图片描述
修改工程配置,加入外部库,打开gpib_test.pro文件夹,末尾加入代码

在这里插入图片描述

这样就可以使用vi接口、或ni488接口编程了,2种接口按需求自己选。

5.2、vi接口介绍

引用vi接口需要的头文件

#include "visatype.h"
#include "visa.h"

常用函数如下:

函数功能
viOpenDefault打开VISA资源管理器
viFindRsrc查找VISA设备获得ID
viOpen打开VISA设备
viClose关闭VISA设备
viWrite发送命令或数据
viRead接收数据
viReadSTB读设备状态

5.3、ni488接口介绍

引用ni488接口需要的头文件

#include "ni488.h"
#include "ni4882.h"

常用函数如下:

函数功能
ibdev获取设备符
ibwrt发送命令或数据
ibrd接收数据
ibwait延时
ibrsp读设备状态

5.4、应用代码

我使用的是vi接口

#include <QDebug>
#include "visatype.h"
#include "visa.h"

ViSession defaultRM;  //VISA资源管理器描述符
ViSession vi; //GPIB设备描述符
char instrDescriptor[VI_FIND_BUFLEN]; //GPIB设备ID名
ViUInt32 numInstrs; //GPIB设备个数
ViFindList findList; 

int MainWindow::gpib_test()
{
    if(viOpenDefaultRM(&defaultRM) != VI_SUCCESS) {
        qDebug() << "打开VISA资源管理器失败.";
        return -1;
    }
    qDebug() << "打开VISA资源管理器成功.";

    if(viFindRsrc (defaultRM, "GPIB?*INSTR", &findList, &numInstrs, instrDescriptor) < VI_SUCCESS)
    {
       qDebug() << "无可用VISA资源,请检查设备连接";
       viClose (defaultRM);
       return -1;
    }
    else
    {
       qDebug() << "可用VISA资源数量:" << numInstrs;
       qDebug() << "GPIB设备描述符:" << instrDescriptor;
    }
    
    if(viOpen(defaultRM, instrDescriptor, VI_NULL, VI_NULL, &vi) != VI_SUCCESS) {
         viClose(defaultRM);
         return -1;
    }
    qDebug() << "GPIB设备成功连接设备";
    
    //向数字万用表发送读信息命令
    char command[256] = "*IDN?";
    char response[256] = "";
    qDebug() << "发送读信息命令:" << command;
    if(VI_SUCCESS == viWrite(vi, (ViBuf)command, strlen(command), NULL)) {
        if(VI_SUCCESS == viRead(vi, (ViBuf)response, sizeof(response), NULL)) {
            qDebug() << "接收数据:" << response;
        }
    }
    
    //向数字万用表发送读信息命令
    char command1[256] = "MEAS:VOLT:DC? 10, 0.003";
    char response1[256] = "";
    qDebug() << "发送读DC电压命令:" << command1;
    if(VI_SUCCESS == viWrite(vi, (ViBuf)command1, strlen(command1), NULL)) {
        if(VI_SUCCESS == viRead(vi, (ViBuf)response1, sizeof(response1), NULL)) {
            qDebug() << "接收数据:" << response1;
        }
    }
    
    // 关闭GPIB设备
    viClose(vi);
    viClose(defaultRM);
}

5.5、带界面示例

上述应用代码上加入界面设计,可得到下图的结果
在这里插入图片描述

5.6、NI I/O Trace软件的使用

可打开NI I/O Trace软件抓协议,会把发送和接收的数据罗列出来,如图:

在这里插入图片描述
右击每条协议,可以查看函数说明,还能解析数据的十六进制值,例如第8条

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/587733.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

冯喜运:5.2原油三连跌引发连锁反应,黄金市场拐点已至?

【黄金消息面分析】&#xff1a;4月ADP就业数据的强劲表现&#xff0c;为美联储的货币政策提供了新的挑战。在这一背景下&#xff0c;黄金市场的反应尤为值得关注。本文将深入探讨美国就业数据对美联储决策的影响&#xff0c;以及这些决策如何影响黄金市场的未来走向。通胀与就…

TouchGFX 总结

文章目录 使用中文字体多屏幕间交换数据UI to MCUMCU to UI API文档参考横竖屏切换 使用中文字体 添加一个textArea&#xff0c;默认的英文文本可见&#xff0c;输入中文字体后就看不见了&#xff0c;是因为这个默认的字体不支持中文&#xff0c;改一下字体就可以了&#xff1…

Java_从入门到JavaEE_08

一、Eclipse开发工具的介绍 Eclipse工具简绍 Eclipse 是著名的跨平台的自由集成开发环境&#xff08;IDE&#xff09;。最初主要用来 Java 语言开发&#xff0c;但是目前亦有人通过插件使其作为其他计算机语言比如 C 和 Python 的开发工具。 下载与安装 下载&#xff1a; Ecli…

现代神经网络总结(AlexNet VGG GoogleNet ResNet的区别与改进)

VGG NIN GoogleNet 1.VGG&#xff0c;NIN&#xff0c;GoogleNet的块结构图对比(注意:无AlexNet) 这些块带来的区别与细节 AlexNet未使用块,主要对各个层进行了解: 卷积:捕捉特征 relu:增强非线性 池化层:减少计算量 norm:规范数据分布 全连接层:分类VGG块的改善(对比AlexNe…

在UI界面中播放视频_unity基础开发教程

在UI界面中播放视频_unity基础开发教程 前言操作步骤结语 前言 之前我写过一篇在场景中播放视频的文章&#xff0c;但是在开发中有时候也会在UI的界面中播放视频&#xff0c;这期我们做一下在UI的界面中播放视频。 操作步骤 首先在场景中创建一个Raw Image&#xff0c;UI->…

java-spring-mvc(服务端接收客户端传参)

目录 &#x1f3af; 服务端接收参数 ✨HttpServletRequest接收 ✨ 声明参数接收 ✨声明pojo类来接收 &#x1f52a;小试牛刀 &#x1f3af; 服务端接收参数 ✨HttpServletRequest接收 HttpServletRequest是Java Servlet规范中定义的一个接口&#xff0c;它提供了与HTTP请求…

【webrtc】RemoteAudioSource的创建线程

m98 代码&#xff1a;I:\webrtc m98_yjf\src\pc\rtp_transmission_manager.cc RtpTransmissionManager::CreateReceiver 在信令线程创建receiver receiver 是&#xff1a; rtc::scoped_refptr<RtpReceiverProxyWithInternal<RtpReceiverInternal>>receiver;其实际…

Advanced RAG 05:探讨基于文本内在语义信息的数据分块方法

编者按&#xff1a;在 RAG (Retrieval Augmented Generation) 系统中&#xff0c;将文本数据高效地划分成相对独立且富有语义信息的数据块&#xff08;chunks&#xff09;是一项较为关键的任务。基于规则的传统数据分块方法存在一些问题&#xff0c;因此探讨基于文本内在语义信…

NASA数据集——VIIRS每日 L3深蓝气溶胶网格产品(AERDB_D3_VIIRS_SNPP),以 1 x 1 度

VIIRS/SNPP Deep Blue Level 3 monthly aerosol data, 1 degree x1 degree grid 简介 美国国家航空航天局&#xff08;NASA&#xff09;的可见红外成像辐射计套件&#xff08;VIIRS&#xff09;标准三级&#xff08;L3&#xff09;每月深蓝气溶胶产品来自苏米国家极轨伙伴关系…

PHP定时任务框架taskPHP3.0学习记录7宝塔面板手动可以执行自动无法执行问题排查及解决方案(sh脚本、删除超过特定天数的日志文件、kill -9)

PHP定时任务框架taskPHP3.0学习记录 PHP定时任务框架taskPHP3.0学习记录1&#xff08;TaskPHP、执行任务类的实操代码实例&#xff09;PHP定时任务框架taskPHP3.0学习记录2&#xff08;环境要求、配置Redis、crontab执行时间语法、命令操作以及Screen全屏窗口管理器&#xff0…

AWS最近宣布Amazon Q现已全面上市

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Gateway结合Nacos使用!!!

一、本地结合使用 1. 引入依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> 2. bootstarp.yml配置文件 如果Nacos中配置使用yaml格式&…

Ubuntu上的screenfetch

2024年4月28日&#xff0c;周日下午 这些文本是由一个叫做 “screenfetch” 的命令生成的&#xff0c;它会显示一些系统和用户信息&#xff0c;包括操作系统、内核版本、系统运行时间、安装的软件包数量、使用的Shell、分辨率、桌面环境、窗口管理器、主题、图标主题、字体、CP…

Linux(ubuntu)—— 用户管理user 用户组group

一、用户 1.1、查看所有用户 cat /etc/passwd 1.2、新增用户 useradd 命令&#xff0c;我这里用的是2.4的命令。 然后&#xff0c;需要设置密码 passwd student 只有root用户才能用passwd命令设置其他用户的密码&#xff0c;普通用户只能够设置自己的密码 二、组 2.1查看…

分布式任务调度平台XXL-JOB

系列文章目录 文章目录 系列文章目录前言前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 Quartz作为开源作业调度中的佼佼者,是作业调度的首选。但是集群环境中Qu…

汇川AM400PLC和禾川X3E伺服EtherCAT通信

1、汇川H5UPLC和X3E伺服EtherCAT总线控制 汇川H5U PLC通过EtherCAT总线控制SV660N和X3E伺服_伺服驱动器 ethercat csdn 汇川-CSDN博客文章浏览阅读1.7w次,点赞3次,收藏37次。首先我们看下系统硬件和软件配置:汇川H5U PLC的编程软件是:AutoShop V4.6.3.0 硬件:PLC H5U-161…

什么副业兼职适合小白?1小时收益40+,1条作品只需5分钟

今天&#xff0c;我要向大家推荐一个当前非常受欢迎的项目&#xff0c;这个项目来自一位忠实的粉丝朋友的推荐。他正是依靠这个项目实现了可观的收益。 这位兄弟通过参与“词典搬砖”项目&#xff0c;已经成功变现超过一万元&#xff0c;而且这笔收入还是在睡眠中获得的&#…

踏上R语言之旅:解锁数据世界的神秘密码(五)

线性与非线性模型及R使用 文章目录 线性与非线性模型及R使用一、数据的分类与模型选择1.变量的取值类型 二、广义线性模型广义线性模型概述Logistic模型 总结 一、数据的分类与模型选择 1.变量的取值类型 因变量记为y&#xff0c;解释变量记为x1&#xff0c;x2,… 因变量y一般…

77、贪心-买卖股票的最佳时机

思路 具体会导致全局最优&#xff0c;这里就可以使用贪心算法。方式如下&#xff1a; 遍历每一位元素找出当前元素最佳卖出是收益是多少。然后依次获取最大值&#xff0c;就是全局最大值。 这里可以做一个辅助数组&#xff1a;右侧最大数组&#xff0c;求右侧最大数组就要从…

ChatGPT4.0知识问答、DALL-E生成AI图片、Code Copilot辅助编程,打开新世界的大门

目录 1、DALL-E 文字转图片 在线AI修改2、Write For Me3、Code Copilot 目前最强的AI编程大模型4、Diagrams: Show Me5、Instant Website [Multipage] 网站合成神器6、AskYourPDF Research Assistant 无限PDF7、Diagrams & Data: Research, Analyze, Visualize 精读Excel …