【QT5-程序控制电源-[GPIB-USB-HS]-SCPI协议-上位机-基础样例【2】】

【QT5-程序控制电源-[GPIB-USB-HS]-SCPI协议-上位机-基础样例【2】】

  • 1、前言
  • 2、实验环境
  • 3、自我总结
      • 1、基础了解仪器控制-熟悉仪器
      • 2、连接SCPI协议
      • 3、了解GPIB-USB-HS
      • 4、软件调试-代码编写
  • 4、熟悉协议-SCPI协议
  • 5、实验过程-熟悉软件
        • (1)去官网NI,下载软件安装
        • (2)了解熟悉软件-连接GPIB硬件
        • (3)手动设置IT6723-软件调试
  • 6、QT实验-编写QT代码
      • (1)新建模版
      • (2)*==加入文件-引入文件==
      • (3)编写代码
      • (4)实验过程
      • (5)实验结果
  • 7、实验代码
  • 8、细节部分
    • (1)终端指令控制
    • (2)下载安装的软件包
    • (3)信息展现形式-字符串或者十六进制
    • (4)自己的努力-试错经历
    • (5)错误信息等
    • (6)文件目录
    • (7)qt 如何引入外部库
  • 9、总结

1、前言

比起使用RS232进行程序控制电源,更常见或许是GPIB硬件进行控制,不过随着时代反正,貌似都逐渐抛弃了这种大口硬件,毕竟要占很大地方,在一些科院或者科研单位的测试仪器上,或许都有这样GPIB的口。

但是随着科技发展,可能这样的口不常见了,当然自己调试过的仪器不是很多,这只是个人意见。

本次实验就是使用【GPIB-USB-HS】进行程序电源控制,因为之前实验,我们其实已经熟悉SCPI的协议了,这里可以直接跳过,所有本文章会以有一部分合一下相互重合。

参考链接:【QT5-程序控制电源-RS232-SCPI协议-上位机-基础样例【1】】

2、实验环境

实验环境还是挺重要的,因为有时候,在你电脑上能运行的东西,在别人的电脑就不一定能运行,这一部分的原因就可能是实验版本不一样。
系统环境:window环境
QT软件版本:qt 5.14.2
在这里插入图片描述
硬件设备:GPIB-USB-HS
在这里插入图片描述

程控电源:IT6723

在这里插入图片描述

3、自我总结

1、基础了解仪器控制-熟悉仪器

在进行程控电源前,一定要对电源本身有一定熟悉,给到一个电源,至少能通过上边按键进行控制,选择出自己需要的电压或者电流,另外就需要查找这个仪器的说明书,看看都可以进行什么样的控制,支持不支持程序控制。
如上图,搜索到,这是艾德克斯的IT6723,一般在网上搜索,就能找到官网,需要注册号。
在这里插入图片描述

官网链接:https://cdn.itechate.com/cn/product.html

然后我们找到这个一起说明书,如下图。
在这里插入图片描述
一般不出意外的话,你应该看到如下说明,就是这个电源的说明了。

链接:https://www.itechate.com/uploadfiles/%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C/user%20manual/it6700h/IT6700%20Programming%20Guide-CN.pdf
在这里插入图片描述

2、连接SCPI协议

(1)为了更好的控制电源,我们需要了解SCPI协议,并且这个电源文档也有简绍,打个比方,就像学习英语一样,与电源沟通的“语言”或者指令。
在这里插入图片描述
上述,也对这个SCPI,进行说明了,更为详细可以去网上搜索,你只要知道它是一种沟通方式就可以了,并不依赖RS232这一种通信硬件

3、了解GPIB-USB-HS

GPIB-USB-HS是一种硬件适配器,用于连接计算机与GPIB(General Purpose Interface Bus)设备之间的通信。GPIB是一种常用于仪器控制和数据采集的标准总线接口。

GPIB-USB-HS适配器是由National Instruments(国家仪器)公司推出的产品,它提供了一个便捷的方式,使计算机能够与使用GPIB接口的各种仪器进行通信。适配器通过USB接口连接到计算机,而GPIB接口则与需要控制的仪器相连。

使用GPIB-USB-HS适配器,你可以通过计算机发送命令和接收数据,实现对GPIB设备的控制和通信。这种适配器通常用于实验室、测试和测量领域,用于控制各种仪器设备,如示波器、信号发生器、频谱分析仪、多用途仪表等。

GPIB-USB-HS适配器通常伴随着相关的软件驱动程序和开发工具,以便在计算机上进行编程和控制。这允许用户通过编写脚本或使用编程语言(如LabVIEW、Python等)与GPIB设备进行交互。

总而言之,GPIB-USB-HS适配器是一种用于连接计算机与GPIB设备进行通信的硬件设备,提供了方便而可靠的接口,使计算机能够控制和与各种GPIB设备进行数据交换。

如果你想要在网上,搜索相关设备,一般会有相关说明的。
在这里插入图片描述

在这里插入图片描述
关于GPIB-USB-HS如下

4、软件调试-代码编写

不同于RS232,因为RS232本质是调试串口,所以使用串口软件就很方便,但是GPIB-USB-HS,可以理解为熟悉另一款硬件设备,并且需要熟悉其软件,自己在使用时,遇到很多问题,这其中大部分都是对这款硬件不了解造成的,还有以前确实没使用过。

大部时间,都用在熟悉GPIB设备上,并且搜索网上,也好像毕竟少的资料关于qt调试GPIB设备的,所以自己遇到很大困难。

所以自己将熟悉GPIB设备分为一节,将qt代码分为另一节。

4、熟悉协议-SCPI协议

简单了解下协议,上网搜索,还是挺多的,这里只是列举,更多大家可以自己查找,简单说,它是一条通信方式,一条指令集,专门音高测量仪器上的。
参考链接:https://blog.csdn.net/weixin_45692672/article/details/113832043
在这里插入图片描述
参考链接:https://zhuanlan.zhihu.com/p/565512748
在这里插入图片描述
具体到文档里,本次实验,参照说明书,如下为其中一个指令
在这里插入图片描述

5、实验过程-熟悉软件

在正式编写QT代码前,我们需要作测试,就是使用本身的GPIB相关软件进行控制,可惜自己的电脑已经没有光盘驱动器了,所以硬件包带的光盘没办法使用,还好有官网网站,另外就是硬件包里的说明书也有点老了。

网站连接:https://www.ni.com/zh-cn/search.html?q=GPIB-USB-HS

(1)去官网NI,下载软件安装

如下图,是官方网站下载软件位置,自己下载并安装完后,一度以为下错软件了,因为和硬件包里的说明书相差太远了,导致自己有些懵逼了,这里可以选择放下纸质说明书了,说明书可能太老了,都不更新了。

网站链接:https://www.ni.com/zh-cn/support/downloads/drivers/download.ni-488-2.html#484357
在这里插入图片描述
这里参照网上的一个安装教程,不过教程也有些老了,但是可以说明很多问题,如下图,是自己更新软件过程截图,基本一路向下就可以了。
在这里插入图片描述

参考链接:https://www.cnblogs.com/ybqjymy/p/13385261.html
在这里插入图片描述
在这里插入图片描述

因为安装完了后,发现图标是如下这个样子的。
在这里插入图片描述

(2)了解熟悉软件-连接GPIB硬件

安装完了软件后,我们就可以使用软件了,
我们需要先连接好硬件,才能调试,将USB插到PC上,然后打开软件“NI MAX”…

我们在设备管理器下可以查看到设备。
在这里插入图片描述
这款软件有点屏幕适配问题,在自己4K屏幕下,显示是有些问题的,将就看吧。
在这里插入图片描述
自己调整屏幕分辨率后,可以较好展示了。
在这里插入图片描述

(3)手动设置IT6723-软件调试

(1)我们需要先设置下程控电源IT6723的通信方式,之前是RS232,我们需要改为GPIB,并且设置ID为1。如果没有问题的话,那么在软件中,就能送搜到了。
在这里插入图片描述
并且软件上自己就写好相关指令,我们直接发送就可以了。

(2)当然,也可以使用测试面板,如下图。
在这里插入图片描述

(3)更多测试。
在这里插入图片描述
对于GPIB设备,有很多设置,我们使用它,去扫描其他设备。
在这里插入图片描述

6、QT实验-编写QT代码

如果上边指令测试差不多了,基本就可以进行qt相关编写了。
代码这里也多一些困难,因为自己之前不知道怎么样调用外部口,其实主要是在文件.pro一些写法,自己是不知道。

这其实很像之前can相关实验,调用外部库,融合在一起,qt只是负责调用这些外部库。

自己开始也不是很懂,绕了很多弯路,可以说是自己一点点试出来的吧。

(1)新建模版

搭建空白模版,这块不是很懂的话可以参考其他qt文章。

文章链接:https://blog.csdn.net/qq_22146161/article/details/130330695#comments_28672901

(2)*加入文件-引入文件

(1)加入文件
文件是在“NI MAX”安装软件的目录下找到,如下几个文件,直接放在目标工程下,要不要引用,非常麻烦,另外注意 32位或者64位,这里时64位的。
在这里插入图片描述
(2)工程引入文件
如下图,可以在.pro文件下,加入文件,在第一版里,自己当时做了很多尝试。
其实当时是直接找到文件,想要引用的,后来总是碰到问题。

但是这里其实也是告诉我们,相关文件在软件NI MAX下哪里去找,当然这要求你在默认目录下。

INCLUDEPATH += “C:\Program Files (x86)\IVI Foundation\VISA\WinNT\Include”
LIBS += “C:\Program Files (x86)\IVI Foundation\VISA\WinNT\Lib_x64\msc\visa64.lib”

在这里插入图片描述

(3)编写代码

在.pro文件下添加完后,我们做个简单布局,然后编写相应代码。
在这里插入图片描述
代码片段直接放在下面了。

#include "mainwindow.h"
#include "ui_mainwindow.h"#include <QDebug>
#include "visa.h"
#include "visatype.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//fnGPIB_usb_hs();}MainWindow::~MainWindow()
{delete ui;
}int  MainWindow::fnGPIB_usb_hs(int control)
{// 打开GPIB设备ViSession defaultRM, vi;ViStatus status;status = viOpenDefaultRM(&defaultRM);if (status != VI_SUCCESS) {qDebug() << "Failed to open the default resource manager.";return -1;}// 打开GPIB设备的地址为1的设备status = viOpen(defaultRM, "GPIB0::1::INSTR", VI_NULL, VI_NULL, &vi);if (status != VI_SUCCESS) {qDebug() << "Failed to open the GPIB device.";viClose(defaultRM);return -1;}// 发送命令并读取响应char command[256] = "*IDN?";char response[256] = "";ui->textEdit->clear();status = viWrite(vi, (ViBuf)command, strlen(command), NULL);if (status == VI_SUCCESS) {status = viRead(vi, (ViBuf)response, sizeof(response), NULL);if (status == VI_SUCCESS) {qDebug() << "Response: " << response;QString str_response=response;ui->textEdit->setText(str_response);}}if(control==1){// 发送命令并读取响应char command1[256] = "OUTPut ON";char response1[256] = "";status = viWrite(vi, (ViBuf)command1, strlen(command1), NULL);if (status == VI_SUCCESS) {qDebug() << "恭喜你,成功打开电源" << response1;ui->label->setText("恭喜你,成功打开电源");//            status = viRead(vi, (ViBuf)response1, sizeof(response1), NULL);
//            if (status == VI_SUCCESS) {
//                qDebug() << "恭喜你,成功打开电源" << response1;
//                ui->label->setText("恭喜你,成功打开电源");
//            }}}else{// 发送命令并读取响应char command1[256] = "OUTPut OFF";char response1[256] = "";status = viWrite(vi, (ViBuf)command1, strlen(command1), NULL);if (status == VI_SUCCESS) {qDebug() << "恭喜你,成功关闭电源" << response1;ui->label->setText("恭喜你,成功关闭电源");
//            status = viRead(vi, (ViBuf)response1, sizeof(response1), NULL);
//            if (status == VI_SUCCESS) {
//                qDebug() << "恭喜你,成功关闭电源" << response1;
//                ui->label->setText("恭喜你,成功关闭电源");
//            }}}// 关闭GPIB设备viClose(vi);viClose(defaultRM);}void MainWindow::on_pushButton_clicked()
{int open=1;fnGPIB_usb_hs(open);
}void MainWindow::on_pushButton_2_clicked()
{int close=2;fnGPIB_usb_hs(close);
}

(4)实验过程

在这里插入图片描述

(5)实验结果

在这里插入图片描述

7、实验代码

实验代码:https://download.csdn.net/download/qq_22146161/88399635

8、细节部分

(1)终端指令控制

在软件中,有个交互控制,是可以使用终端进行控制的。
在这里插入图片描述
但是指令使用方式,要根据帮助文档内相关指令来。
在这里插入图片描述
另外选择仪器设备不对或者指令错误,都会报错。
在这里插入图片描述

(2)下载安装的软件包

在自己安装时,发现有两种名字的安装包软件,都是一样的,选择一个安装。
在这里插入图片描述
如果发现那个软件没装,也可以再次更新下载的。
在这里插入图片描述

(3)信息展现形式-字符串或者十六进制

如下,在调试过程中,可以选择字符串不同展示形式,根据自己需要选择。
(1)带着“\s”等
在这里插入图片描述
(2)十六进制显示
在这里插入图片描述

(4)自己的努力-试错经历

(1)自己开始也不懂,网上说啥,自己就照着做啥,比如,要引入文件,你要确定你自己文件是32位还是64位,其实主要是引入不知道对不对。
如下图所示,是自己第一版代码,按照自己习惯,都放在工程目录下。
在这里插入图片描述
在这里插入图片描述

后来发现其实不用那么多,在第二版简化了。
在这里插入图片描述
(2)第二个就是在.pro内写法,开始也是不知道,以为要指定到目录,其实时不太好的,最后全放在工程目录下,直接引用就好了。
在这里插入图片描述
如下图,自己不会链接外部库,结果各种报错,告诉你找不到文件。
在这里插入图片描述

(5)错误信息等

我们在使用指令,进行测试后过程中,由于不熟悉,肯定会犯错误,输入错误指令,这款电源,会默认储存10条错误,看说明上有写,通过询问,会依次打印一条错误信息。

对于错误信息,后面会有个对照表,告诉你是因为啥错误的。
在这里插入图片描述

(6)文件目录

相关文件.h文件
在这里插入图片描述
在这里插入图片描述
其他样例
在这里插入图片描述

(7)qt 如何引入外部库

自己开始不知道如何引入外部库,看下边博文,写的挺好的。

文章链接:https://blog.51cto.com/u_15950551/6032171
在这里插入图片描述

9、总结

就拿本章的程控电源来举例,它的本质其实是串口通讯,另外你需要使用一些简单的命令语言,就可以能控制起来了。

之前是做过相关串口实验的,只需要一个RS232的转换器就可以了。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

玩转Linux—如何在Linux环境中部署MySQL、Redis和nginx

1、Linux常用命令 Linux学习之路&#xff1a; VMware虚拟机安装Linux系统(详解版) 查看当前文件目录&#xff1a;ls查看目录中文件详细信息&#xff1a;ll输出当前所处的目文件目录&#xff1a;pwdLinux查看当前IP地址&#xff1a;ifconfigWindows查看当前IP地址&#xff1…

MS31703H 桥栅极驱动控制器,可P2P替代TI的DRV8703

MS31703NA 是一款小型单通道 H 桥栅极驱动 器。它使用四个外部 N 通道 MOSFET &#xff0c;驱动一个双 向刷式直流电机。 PH/EN 、独立半桥或 PWM 允许轻松连接到控制 器电路。内部传感放大器提供可调的电流控制。集 成的电荷泵可提供 100% 占空比&#xff0c;而…

机械臂运动控制,通讯的解包->运动控制->数据封包上报过程

一、协议 数据格式为小端模式&#xff0c;浮点数格式为IEEE754&#xff0c;需与上位机的PC端一致&#xff0c;如window系统&#xff0c;其它系统需要自行测试&#xff0c;用于传输16位、32位、float数据格式&#xff0c;避免只传输字节数据带来转换的繁琐及精度丢失。 二、下位…

机器学习:随机森林

集成学习 集成学习&#xff08;Ensemble Learning&#xff09;是一种机器学习方法&#xff0c;通过将多个基本学习算法的预测结果进行组合&#xff0c;以获得更好的预测性能。集成学习的基本思想是通过结合多个弱分类器或回归器的预测结果&#xff0c;来构建一个更强大的集成模…

springboot+jsp+ssm高校图书馆图书借阅收藏评论管理系统617w1

本图书管理系统系统采用B/S架构&#xff0c;数据库是MySQL&#xff0c;网站的搭建与开发采用了先进的Java进行编写&#xff0c;使用了SSM&#xff08;Spring、SpringMVC、Mybits&#xff09;框架。该系统从两个对象&#xff1a;由管理员和用户来对系统进行设计构建。前台主要功…

面试题:在大型分布式系统中,给你一条 SQL,让你优化,你会怎么做?

亲爱的小伙伴们&#xff0c;大家好呀&#xff01;我是小米&#xff0c;一个热爱技术、乐于分享的90后程序猿。今天&#xff0c;我要和大家聊聊一个在大型分布式系统中非常有趣和挑战性的话题——如何优化 SQL 查询&#xff01; 这个问题可不简单&#xff0c;但不要担心&#x…

python练习4

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…

Vue3最佳实践 第七章 TypeScript 创建Trello 任务管理器

| ​ 我们将探讨如何使用Vue.js从零开始创建一个类似于Trello的任务管理应用程序。如果你不熟悉Trello&#xff0c;它是一款非常流行的任务管理工具&#xff0c;允许你把任务写在卡片上&#xff0c;然后通过一个看板的方式来直观地管理这些任务。Trello不仅可以用于个人的任务…

电子地图 | VINS-FUSION | 小觅相机D系列

目录 一、相关介绍 二、VINS-FUSION环境安装及使用 &#xff08;一&#xff09;Ubuntu18.04安装配置 1、Ubuntu下载安装 2、设置虚拟内存&#xff08;可选&#xff09; &#xff08;二&#xff09;VINS-FUSION环境配置 1、ros安装 2、ceres-solver安装 3、vins-fusion…

JavaScript中的map()和forEach()方法有什么区别?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

工信部教考中心:什么是《研发效能(DevOps)工程师》认证,拿到证书之后有什么作用!(上篇)丨IDCF

在计算机行业中&#xff0c;资质认证可以证明在该领域内的专业能力和知识水平。各种技术水平认证也是层出不穷&#xff0c;而考取具有公信力和权威性的认证是从业者的首选。同时&#xff0c;随着国内企业技术实力的提升和国家对于自主可控的重视程度不断提高&#xff0c;国产证…

基于Java的教学评价管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统功能结构图系统ER图具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划…

Flink+Doris 实时数仓

Flink+Doris 实时数仓 Doris基本原理 Doris基本架构非常简单,只有FE(Frontend)、BE(Backend)两种角色,不依赖任何外部组件,对部署和运维非常友好。架构图如下 可以 看到Doris 的数仓架构十分简洁,不依赖 Hadoop 生态组件,构建及运维成本较低。 FE(Frontend)以 Java 语…

用 Pytorch 自己构建一个Transformer

一、说明 用pytorch自己构建一个transformer并不是难事,本篇使用pytorch随机生成五千个32位数的词向量做为源语言词表,再生成五千个32位数的词向量做为目标语言词表,让它们模拟翻译过程,transformer全部用pytorch实现,具备一定实战意义。 二、论文和概要 …

【数据结构--八大排序】之希尔排序

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

STM32--人体红外感应开关

本文主要介绍基于STM32F103C8T6和人体红外感应开关实现的控制算法 简介 人体红外模块选用HC-SR501人体红外传感器&#xff0c;人体红外感应的主要器件为人体热释电红外传感器。人体都有恒定的体温&#xff0c;一般在36~37度&#xff0c;所以会发出特定波长的红外线&#xff0…

Mac上protobuf环境构建-java

参考文献 getting-started 官网pb java介绍 maven protobuf插件 简单入门1 简单入门2 1. protoc编译器下载安装 https://github.com/protocolbuffers/protobuf/releases?page10 放入.zshrc中配置环境变量  ~/IdeaProjects/test2/ protoc --version libprotoc 3.12.1  …

国庆假期作业6

一、ARM的工作模式 1、非特权模式 user模式&#xff1a;非特权模式&#xff0c;大部分任务执行在这种模式 2、特权模式 异常模式&#xff1a; FIQ : 当一个快速&#xff08;fast) 中断产生时将会进入这种模式 IRQ : 当一个通用&#xff08;normal) 中断产生时将会进入这种模式…

中国企业400电话在线申请办理

在当今竞争激烈的商业环境中&#xff0c;企业需要寻求各种方式来提升客户服务和市场竞争力。而拥有一个专属的400电话号码&#xff0c;不仅可以为企业带来更多的商机&#xff0c;还能提升企业形象和客户满意度。本文将介绍如何在线申请办理中国企业400电话&#xff0c;并提供一…

总结一:C++面经(五万字长文)

文章目录 一、C基础部分1、C特点。2、说说C语言和C的区别。3、说说 C中 struct 和 class 的区别。4、 include头文件的顺序以及双引号""和尖括号<>的区别。5、说说C结构体和C结构体的区别。6、导入C函数的关键字是什么&#xff0c;C编译时和C有什么不同&#x…