【QT5-程序控制电源-RS232-SCPI协议-上位机-基础样例【1】】
【QT5-程序控制电源-RS232-SCPI协议-上位机-基础样例【1】】
- 1、前言
- 2、实验环境
- 3、自我总结
- 1、基础了解仪器控制-熟悉仪器
- 2、连接SCPI协议
- 3、选择控制方式-程控方式-RS232
- 4、代码编写
- 4、熟悉协议-SCPI协议
- 5、测试实验-测试指令
- (1)硬件连接
- (2)指令测试
- 6、QT实验-编写QT代码
- 7、实验代码
- 8、细节部分
- (1)指令要遵循格式-指令测试
- (2)硬件连接RS232
- (3)输入错误或者错误指令
- 9、总结
1、前言
你使用一个东西越久,你就会发现它能做到的事情可以很多,对自己来说,qt就是这样,刚开始学习时,其实也是什么都不懂得的,后来慢慢的熟悉,通过不同实验,以及使用方式,发现能做到事情越来越多,这里也有你对这个工具的理解程度。
2、实验环境
实验环境还是挺重要的,因为有时候,在你电脑上能运行的东西,在别人的电脑就不一定能运行,这一部分的原因就可能是实验版本不一样。
系统环境:window环境
QT软件版本:qt 5.14.2
硬件连接:USB转RS232的转换器和转换线
程控电源:IT6723
连接线:9DB转接线
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、选择控制方式-程控方式-RS232
本次选择的RS232,但是你要是仔细看说明书,可以发现,至少这款程控电源,不只是RS232,本篇是使用RS232进行调试,如下,有其说明,如果你是其它类型电源,并且协议也是SCPI的话,还要考虑接线细节。
4、代码编写
熟悉玩了后,最后才是代码编写,当然我们先要做个测试,使用串口软件,进行通信,看看是否能控制,如果能控制,那么程控就简单了。
4、熟悉协议-SCPI协议
简单了解下协议,上网搜索,还是挺多的,这里只是列举,更多大家可以自己查找,简单说,它是一条通信方式,一条指令集,专门音高测量仪器上的。
参考链接:https://blog.csdn.net/weixin_45692672/article/details/113832043
参考链接:https://zhuanlan.zhihu.com/p/565512748
具体到文档里,本次实验,参照说明书,如下为其中一个指令
5、测试实验-测试指令
在正式编写QT代码前,我们需要作测试,就是直接使用串口软件控制程序电源,同时来熟悉指令。
(1)硬件连接
我们需要先连接好硬件,才能调试,将USB转串口转换器查到PC上,找一个DB9,公转母的转接线。
另一端插在电源背面上,如下图所示。
然后我们打开一个串口软件,按照协议说明,一条一条,测试相关命令,如下图所示,我们使用一个指令,并且设置波特率9600,如何正常,就会有相关信息返回来了。
SYST:VERS?
(2)指令测试
为了更好了解,我们更多指令测试
(1)这期间可能会有仪器不响应,因为如果控制成功的话,是不返回信息的,所有有时候你也不知道,是不是自己控制成功了,多长是吧。
(2)从自己测试来看,好像并不是每条指令都会响应,但是一般查询指令都会响应
(3)以下罗列,是自己测试的,具体可以根据协议说明书来
DISPlay?
VOLTage? //询问当前电压
*IDN? //电源系统版本
OUTPut ON //电源控制--开
OUTPut OFF //电源控制--关
SYST:REM
SYST:ERR? //询问系统错误
*ESR?
TRIG:SOUR EXT; COUNT 10
APPLy 12,1 //设置电流电压 12V 1A
如下,是测试时,填入的指令
如下是,是测试时,返回情况,记得点上,发送新行。
6、QT实验-编写QT代码
如果上边指令测试差不多了,基本就可以进行qt相关编写了。
其本本质是“串口通信”,也可以说是串口实验,可以参考之前样例。
参考连接:【QT 5 调试软件+串口相关初试串口+基础样例】
如下图,我们简单更改下波特率
“这里需要注意的是,需要先设置电源上的波特率,和通讯方式,这块是需要对仪器的熟悉”
再加入相关控制指令,记得加入“\n”.
7、实验代码
实验代码:https://download.csdn.net/download/qq_22146161/88399153
8、细节部分
(1)指令要遵循格式-指令测试
自己在测试过程中,开始不是很懂,测试过也不知道成没成功,并且控制成功后,其实电源不会有任何声音反应,反而是错误的时候,会听到蜂鸣器响声,并且对格式有要求,只能自己多测试熟悉。
如下是自己测试记录,也是测试很多的。
(2)硬件连接RS232
自己连接时遇到的,看是没有使用DB9公转母线,使用杜邦线直接插的,发现怎么都不好使,这块最好买实体线,或者多测试,如果发现任何指令都不行,那么建议查找线的问题。
(3)输入错误或者错误指令
我们在使用指令,进行测试后过程中,由于不熟悉,肯定会犯错误,输入错误指令,这款电源,会默认储存10条错误,看说明上有写,通过询问,会依次打印一条错误信息。
对于错误信息,后面会有个对照表,告诉你是因为啥错误的。
9、总结
就拿本章的程控电源来举例,它的本质其实是串口通讯,另外你需要使用一些简单的命令语言,就可以能控制起来了。
之前是做过相关串口实验的,只需要一个RS232的转换器就可以了。
相关文章:

【QT5-程序控制电源-RS232-SCPI协议-上位机-基础样例【1】】
【QT5-程序控制电源-RS232-SCPI协议-上位机-基础样例【1】】 1、前言2、实验环境3、自我总结1、基础了解仪器控制-熟悉仪器2、连接SCPI协议3、选择控制方式-程控方式-RS2324、代码编写 4、熟悉协议-SCPI协议5、测试实验-测试指令(1)硬件连接(…...
leetcode 1049. 最后一块石头的重量 II、494. 目标和、474. 一和零
1049. 最后一块石头的重量 II 有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x < y。那么粉碎的可能结果…...

Error string: Could not load library
启动Rivz时,报错: Error string: Could not load library (Poco exception libg2o_csparse_extension.so.0.1: cannot open shared object file: No such file or directory) [ERROR] [1696572310.529059051]: Failed to load nodelet [/radar_graph_s…...
pom.xml里的标签
pom.xml 是 Maven 项目的配置文件,其中包含了各种配置信息和依赖管理。下面是一些常见的 pom.xml 中的标签和其作用的简要说明: <project>:根标签,定义了整个项目的基本信息和结构。 <groupId>:指定项目所…...
微服务部署的正确策略
微服务部署挑战 单体应用程序的部署意味着您运行单个(通常是大型应用程序)的多个相同副本。这主要是通过配置 N 个服务器(无论是物理服务器还是虚拟服务器)并在每台服务器上运行应用程序的 M 个实例来完成。虽然这看起来非常简单…...

C#中的数组探究与学习
目录 C#中的数组一般分为:一.数组定义:为什么要使用数组?什么是数组?C#一维数组for和foreach的区别C#多维数组C#锯齿数组初始化的意义:适用场景:C#中的数组一般分为: ①.一维数组。 ②.多维数组,也叫矩形数组。 ③.锯齿数组,也叫交错数组。 一.数组定义: 数组…...

计算机网络八股
1、请你说说TCP和UDP的区别 TCP提供面向连接的可靠传输,UDP提供面向无连接的不可靠传输。UDP在很多实时性要求高的场景有很好的表现,而TCP在要求数据准确、对速度没有硬件要求的场景有很好的表现。TCP和UDP都是传输层协议,都是为应用层程序服…...

Waves 14混音特效插件合集mac/win
Waves14是一款音频处理软件,主要用于音频编辑、混音和母带处理。该软件提供了各种插件,包括EQ、压缩、混响、延迟、失真等,以及一些专业的音频处理工具,如L2限幅器、Linear Phase EQ和多频道扬声器管理。 Mac软件下载:…...

Python python-docx 使用教程
openpyxl是Python下的Word库,它能够很容易的对Word文档进行读取 安装方法:pip install python-docx国内镜像安装:pip install -i https://mirrors.aliyun.com/pypi/simple/ python-docx(推荐,安装更快)中文…...

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 …...

CocosCreator3.8研究笔记(二十二)CocosCreator 动画系统-动画剪辑和动画组件介绍
国庆假期,闲着没事,在家研究技术~ 大家都知道在Cocos Creator3.x 的版本的动画编辑器中,可以实现不用写一行代码就能实现各种动态效果。 Cocos Creator动画编辑器中主要实现关键帧动画,不仅支持位移、旋转、缩放、帧动画ÿ…...

信看课堂-厘米GNSS定位
我们常常说GPS 定位,不过定位远不止GPS定位,通过本节课程,我们将会了解到,原来GPS只是定位的一种: GNSS概述 不同的GNSS系统使用不同的频段来传输导航信号。以下是一些主要的GNSS系统及其相应的频段,用表…...
2023CCPC网络赛(A E)
2023CCPC网络赛(A E) The 2nd Universal Cup. Stage 3: Binjiang - Dashboard - Contest - Universal Cup Judging System A. Almost Prefix Concatenation 思路:首先考虑如何求出每个位置允许失配一次的LCP长度 , 可以二分哈希求LCP , 即…...
使用 python 检测泛洪攻击的案例
使用 python 检测泛洪攻击的案例 本案例只使用python标准库通过执行命令来监控异常请求, 并封锁IP, 不涉及其他第三方库工具. import os import time from collections import Counter# 1、update 命令, 采集CPU的平均负载 def get_cpu_load():"""uptime 命令…...
SCROLLINFO scrollInfo; 2023/10/5 下午3:38:53
2023/10/5 下午3:38:53 SCROLLINFO scrollInfo;scrollInfo.cbSize = sizeof(SCROLLINFO);scrollInfo.fMask = SIF_ALL;//scrollInfo.nMin = 0; // 最小位置//scrollInfo.nMax = nRowCountToShow; // 最大位置//scrollInfo.nPage = nRowCountToShow; // 页面大小//scrollInf…...
Python--控制台获取输入与正则表达式
前言一、控制台获取输入1.1 字符串输入1.2 整数输入1.3 浮点数输入1.4 布尔值输入1.5 列表输入1.6 汇总 二、正则表达式2.1 匹配数字2.2 模式检查2.3 替换字符2.4 切分字符串2.5 搜索并提取匹配的部分2.6 使用捕获组提取匹配的部分2.7 非贪婪匹配2.8 忽略大小写匹配2.9 使用预定…...

网络基础知识面试题1
VC++常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)...

JavaScript系列从入门到精通系列第十五篇:JavaScript中函数的实参介绍返回值介绍以及函数的立即执行
文章目录 一:函数的参数 1:形参如何定义 2:形参的使用规则 二:函数的返回值 1:函数返回值如何定义 2:函数返回值种类 三:实参的任意性 1:方法可以作为实参 2:将匿…...

js中的原型链
编写思路: 简单介绍构造函数介绍原型对象原型对象、实例的关系,从而引出原型链的基本概念 原型链基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。 1. 什么是构造函数 构造函数本身跟普通函数一样,也不存在定义构造函数…...

一文搞懂APT攻击
APT攻击 1. 基本概念2. APT的攻击阶段3. APT的典型案例参考 1. 基本概念 高级持续性威胁(APT,Advanced Persistent Threat),又叫高级长期威胁,是一种复杂的、持续的网络攻击,包含高级、长期、威胁三个要素…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...

Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...

【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...