【触摸屏功能测试】MQTT_STD本地调试说明-测试记录
1、MQTT简介
MQTT是一种基于发布/订阅模式的“轻量级”通讯协议。它是针对受限的、低带宽的、高延迟的、网络不可靠的环境下的网络通讯设备设计的。
发布是指客户端将消息传递给服务器,订阅是指客户端接收服务器推送的消息。每个消息有一个主题,包含若干个数据。客户端A发布某主题的消息后,客户端B通过订阅该主题的消息,即可获取该主题消息的所有数据。在本应用中,TPC为客户端。

消息中的数据与TPC的设备通道相连,实现服务器与TPC之间的数据交换。数据连接通道后,再经由通道连接到实时数据库中的数据对象(变量),从而被画面和策略所使用。

2、MQTT使用
QTT_STD驱动用于使客户端通过MQTT协议向特定服务器发布或订阅消息。要实现消息的发布和订阅,首先需要用户自行搭建好服务器,再将服务器的信息,输入MQTT_STD驱动属性配置界面。
本样例以MQTT_STD驱动与本地服务器的通讯为例进行介绍。
2.1 、驱动属性配置
随本文档打包的方案包中自带已配置好的本地服务器。服务器IP地址为127.0.0.1,端口号为1883,无用户名、用户密码等。稍后的设置需要使用到服务器IP地址和端口号。
使用McgsPro软件新建工程——设备窗口,添加MQTT_STD驱动,如下图所示。

进入“MQTT客户端属性配置”界面,步骤如下图所示。

在“MQTT客户端属性配置”界面的“一般属性”功能页,输入服务器IP、服务器端口号等信息,以实现客户端和服务器的连接。
本样例设置服务器IP为127.0.0.1,服务端口为1883,其他设置保持默认即可。本地IP和端口为空,则驱动不绑定本地IP地址和端口,否则驱动在连接服务之前会绑定本地IP地址。如果用户需要设置用户名和用户密码,需要勾选界面的“验证”复选框才会出现对应的设置界面。

2.3、消息发布/订阅
配置完客户端属性后,客户端TPC就可以和服务器正常连通了,但若想实现消息的发布和订阅,还需要进一步的配置。
1)配置发布、订阅选项卡
首先在MCGS中找到发布和订阅选项卡。
发布选项卡用于编辑发布消息的消息列表,用户可在此处对发布消息进行添加、编辑、删除、清空等操作。
需要添加发布的消息时,将鼠标置于列表视图上,使用右键打开快捷菜单,点击“添加发布主题”进入“发布消息”配置界面。配置完成后,也可通过右键菜单的“编辑发布主题”或直接双击需要修改的主题名进入主题设置界面。

订阅选项卡用于编辑订阅消息的消息列表,用户可在此处对订阅消息进行添加、编辑、删除、清空等操作。
需要添加订阅的消息时,将鼠标置于列表视图上,使用右键打开快捷菜单,点击“添加订阅主题”进入“订阅消息”配置界面。配置完成后,也可通过右键菜单的“编辑发布主题”或直接双击需要修改的主题名进入主题设置界面。

2)发布/订阅消息属性配置界面
在发布消息属性配置界面可以设置消息的主题名、主题别名、传输质量、消息格式、触发方式以及消息编辑等。
其中,“触发方式”只有发布消息配置界面才有,用于指定消息发布的触发方式,支持变数触发和所有报警触发两种方式。
本例设置主题名为“/test”,主题别名为“sample”,其他设置保持默认不变。

在订阅消息属性配置界面可以设置消息的主题名、主题别名、传输质量、消息格式以及消息编辑等。订阅消息没有触发方式选项。
本例设置主题名为“/test”,主题别名为“sample”,其他设置保持默认不变。

“主题名称说明”中的内容,不是必须出现在主题名称中的,仅需要时才使用。使用方法以“%1”为例,它代表客户端ID。将主题名称设置为“/%1/test”,而前面“mqtt客户端属性配置”页面中的客户端ID为“mqtt_client”,则相当于此时主题名称为“/mqtt_client/test”。
3)消息编辑
点击“消息编辑”按钮进入消息编辑界面。
消息编辑界面主要用于编辑消息的数据结构。消息节点可以为对象、数组或普通数据,普通数据可放置在对象或数组之下,对象或数组可以相互嵌套。此处使用到的数据格式为JSON,JSON简介可参考文档《JSON格式简介》(随本说明文档一起打包提供)。
数据结构的编辑方式为从“数据类型选择器”窗口将对应的数据类型拖拽到“消息定义窗口”的指定节点。

右击可对消息节点进行编辑(消息节点名称、类型等)、删除等操作。完成节点编辑后,“JSON格式浏览”窗口会显示当前结构对应的JSON格式。

同时,也可以单击“启用逆向”,将在外部文本编辑器中编辑好的的JSON格式内容粘贴到JSON格式浏览框中,单击逆向生成即可从JSON格式生成对应的消息结构。注意,生成的结构的节点数据类型可能与用户预期的格式存在差异。这时需要在消息定义窗口右键修改节点的数据类型。
设置订阅消息的方法和设置发布消息的方法相同。
设置完成后,选项卡列表中出现刚才定义的消息。点击保存按钮保存配置并退出配置界面。

由于本例中发布和订阅的主题及消息的设置相同,所以工程在本地模拟运行后,客户端将订阅到本机发布的消息。设置为相同仅为本例演示需求,用户使用时,根据自己的需求设置即可。
3)驱动通道
配置完消息的发布和订阅后,驱动根据客户的配置自动生成三种通道:订阅数据通道、发布数据通道和发布触发通道。

a.订阅数据通道
订阅数据通道的通道名以“subscribe”开头,主要用于客户订阅相关主题消息数据,用户通过关联数据变量接收数据包中的各个数据。
b.发布数据通道
发布数据通道的通道名以“publish”开头,主要用于客户关联要发布的数据变量,与要发布的消息数据相关。
c.发布触发通道
发布触发通道的通道名以“trigger”开头,主要用于客户发布消息使能。如果主题触发方式配置为变数触发,那么一旦触发通道所关联变量的值发生改变即可触发一条数据发布。如果主题触发方式配置为报警触发,那么触发通道所关联变量的值符合报警条件即可发布一条数据。
将通道连接变量以便使用。

4)组态画面
为了直观的观察到客户端发布和订阅的效果,我们组态一个简单的窗口画面来显示数据。
a.首先进入用户窗口。

b.然后组态一个简单的画面用以显示变量的值。

3、 MQTT调试
3.1、 数据的发布和订阅
想要测试工程数据的发布和订阅情况,可以使用随本说明文档一起打包提供的本地服务器进行测试。
1)启动本地服务器:进入随本文档一起打包提供的文件夹“MQTT本地服务器”,双击server.bat启动本地MQTT服务器。

2)启动本地客户端:模拟运行刚才组态好的McgsPro工程。

3)发布数据:在关联变量“p_df”的输入框中输入需要的数值,如66,然后点击按钮触发数据的发布。
4)订阅数据:由于本例中发布和订阅的主题及消息的设置相同,所以会订阅到本机发布的消息。此时,“s_df”输入框显示66,表示订阅成功。

3.2、 数据包查看
想要查看发布出来的消息数据包,可以使用mqtt.fx软件(随本说明文档一起打包提供)。
设置mqtt.fx参数:安装mqtt.fx软件,运行软件后设置服务器的IP地址和端口号等参数。本例仅需设置服务器IP地址为127.0.0.1,服务端口为1883即可。

2)连接服务器。

3)查看客户端发布的消息。订阅对应主题后,使用McgsPro模拟工程发布一条消息,就可以从mqtt.fx查看到客户端发布的消息。

4)使用mqtt.fx也可发布消息,可以将Subscribe收到的消息复制到Publish界面,修改对应数据的值后发布给模拟工程,模拟工程收到消息后也会更新数据显示。

能使用mqtt.fx软件订阅和发布模拟工程对应主题的消息,则表示工程组态正确。
3.3、 远端服务器验证
也可以使用mqtt.fx软件验证远端服务器是否部署正确,只需要将设置界面中的服务器通信参数设置为远端服务器的参数,即可对远端服务器进行发布和订阅测试。

2)开启订阅

3)发布消息

4)查看消息:查看是否订阅到发布的消息,若成功则证明服务器正常,不成功则检查服务器。

相关文章:
【触摸屏功能测试】MQTT_STD本地调试说明-测试记录
1、MQTT简介 MQTT是一种基于发布/订阅模式的“轻量级”通讯协议。它是针对受限的、低带宽的、高延迟的、网络不可靠的环境下的网络通讯设备设计的。 发布是指客户端将消息传递给服务器,订阅是指客户端接收服务器推送的消息。每个消息有一个主题,包含若干…...
六十分之十三——黎明前
目录一、目标二、计划三、完成情况四、提升改进(最少3点)五、意外之喜(最少2点)六、总结一、目标 明确可落地,对于自身执行完成需要一定的努力才可以完成的 1.8本技术管理书籍阅读(使用番茄、快速阅读、最后输出思维导图)2.吴军系列硅谷来信1听书、香帅的北大金融…...
【Call for papers】CRYPTO-2023(CCF-A/网络与信息安全/2023年2月16日截稿)
Crypto 2023 will take place in Santa Barbara, USA on August 19-24, 2023. Crypto 2023 is organized by the International Association for Cryptologic Research (IACR). The proceedings will be published by Springer in the LNCS series. 文章目录1.会议信息2.时间节…...
线程的信号量和互斥量
文章目录线程的信号量初始化信号量:sem_init减少信号量:sem_wait增加信号量:sem_post删除信号量:sem_destroy代码示例线程的互斥量初始化互斥量:pthread_mutex_init锁住互斥量:pthread_mutex_lock解锁互斥量…...
关于Linux,开源社区与国产化的本质区别
因为生产力驱动而非理想主义驱动。 开源运动的蓬勃发展来自于GNU(GNU is not unix),RichardMatthewStallman领导着一群黑客,带着对比尔盖茨的鄙视,制定了GPL协议,以后人人都能从伟大的前人身上学习到源代码的精髓,让软…...
Win11下Linux子系统迁移方法及报错解决
Win11 将Linux子系统从C盘迁移到其他盘Win11下Linux子系统迁移方法及报错解决1、下载LxRunOffline2、ERROR:directory is not empty 报错解决参考链接Win11下Linux子系统迁移方法及报错解决 C盘满了,Ubuntu子系统占了100多G怎么办?直接将子系…...
python维护的一些基础方法
1】通过命令行查看python安装库的基本信息 pip show numpy # 查看python中numpy库的安装版本信息 2】python 环境的开发与维护 python的开发与C\MATLAB等最大的不同就是,python中版本的更新不对历史版本负责,就是说你以历史版本开发的python程序&#…...
C语言 数组元素的指针
1.一个变量有地址,一个数组包含若干个元素,每个数组元素都在内存中占用存储单元,它们都有相应的地址。 2.指针变量既然可以指向变量,当然也可以指向数组元素(把某一元素的地址放入一个指针变量中)。 3.所谓…...
(C语言)指针进阶
问:1. ( ),[ ],->,,--,. ,*的操作符优先级是怎么样的?2. Solve the problems:只有一个常量字符串与一个字符指针,该怎么打印常量字符串所有内容…...
DS期末复习卷(三)
选择题 某数据结构的二元组形式表示为A(D,R),D{01,02,03,04,05,06,07,08,09},R{r},r{<01,02>,<01&a…...
Java链表模拟实现+LinkedList介绍
文章目录一、模拟实现单链表成员属性成员方法0,构造方法1,addFirst——头插2,addLast——尾插3,addIndex——在任意位置插入3.1,checkIndex——判断index合法性3.2,findPrevIndex——找到index-1位置的结点…...
MySQL——单表、多表查询
一、单表查询 素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float(8,2) NOT NULL, 政治面貌 varcha…...
关于表的操作 数据库(3)
目录 前期准备工作: 一、单表查询: 二、多表查询: 前期准备工作: 修改数据库的配置文件,,使其可以显示库名,其中//d代表当前使用的数据库名 注:vim /etc/my.cnf.d/mysql-server.c…...
C++:红黑树
红黑树的概念 红黑树是一棵二叉搜索树,但是红黑树通过增加一个存储位表示结点的颜色RED或BLACK。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出2倍,因而是接近平衡的。 红黑树的性质 ⭐…...
每天一道算法题の中缀表达式
中缀表达式(、-、*、/) :中缀表达式是指操作符位于操作数之间的数学表达式。例如,在中缀表达式"2 3"中,操作符""位于操作数"2"和"3"之间。现给定一个中缀表达式,…...
Dar语法基础-泛型
泛型 如果查看基本数组类型 List 的 API 文档,您会发现该类型实际上是 List<E>。 <…> 表示法将 List 标记为泛型(或参数化)类型——具有正式类型参数的类型。 按照惯例,大多数类型变量的名称都是单字母的࿰…...
rt-thread------串口(一)配置
系列文章目录 rt-thread 之 fal移植 rt-thread 之 生成工程模板 文章目录系列文章目录前言一、串口的配置step1:通过串口名字找到串口句柄step2:配置串口参数step3:设置串口接收回调函数step4:打开串口设备前言 UART(…...
Android - 自动系统签名
一、系统签名 以下是两类应用开发场景: 普通应用开发:使用公司自定义 keystore 进行签名,如:微信、支付宝系统应用开发:使用 AOSP 系统签名或厂商自定义 keystore 进行签名,如:设置、录音 系…...
SSH 服务详解 (八)-- vscode 通过 SSH 远程连接 linux 服务器
vscode 通过 SSH 远程连接 linux 服务器 SSH服务详解(一)–Linux SSH 服务器与客户端的安装与启动 SSH服务详解(二)–使用私钥登录 SSH 服务器(免密登录) SSH 服务详解 (三)-- 使用 SSH 代理 SSH 服务详解 (四)-- 本地调用远程主机的命令 SSH 服务详解 (五)-- 远程文件拷贝…...
【PTA Advanced】1060 Are They Equal(C++)
目录 题目 Input Specification: Output Specification: Sample Input 1: Sample Output 1: Sample Input 2: Sample Output 2: 思路 C 知识点UP 代码 题目 If a machine can save only 3 significant digits, the float numbers 12300 and 12358.9 are considered …...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...
