EsDAMPC-ZC1应用——串口服务器(一)

ZLG致远电子 2022-08-24 11:45

本文以实现串口MQTT服务器为项目目标,展开讲解,介绍如何通过EsDA工具和MPC-ZC1平台,进行应用开发,逐步完成项目需求。

  简介

工业串口服务器,以提供串口与网络服务器之间的 双向数据透明传输 为核心业务。在不用修改原有产品系统的情况下,为串口设备提供了便捷的联网通道,即扩展了物联网功能,又保障了原有系统的稳定性。

串口端主要为 RS-232、485、422 等接口,网络端通常为 TCP、UDP、MQTT、HTTP 等协议服务器。

本文以实现 串口MQTT服务器 为项目目标,展开讲解,介绍如何通过 EsDA 工具和 MPC-ZC1 平台,进行应用开发,逐步完成项目需求。

  前期准备

可通过 EsDA MPC-ZC1 入门篇相关文章,掌握 EsDA 基本开发流程:
  • EsDA MPC-ZC1 入门(一)—— 软件安装
  • EsDA MPC-ZC1 入门(二)—— LED 控制

一、项目需求

项目开发前,先对项目需求进行梳理和拆解,主要有以下几点:

  • 支持串口通信;

  • 支持MQTT通信;

  • 串口与MQTT服务器实现数据透传;

  • 支持串口和MQTT服务器控制 LED 显示。

* 本文仅以 LED 作为扩展业务,可根据实际需求进行扩展。

二、业务框图

根据项目需求,大致将系统划分为以下几大模块:

1. 串口通信

  • 实现串口的数据收发功能;

  • 实现串口基本参数配置功能(波特率、奇偶校验位、数据位)。

2. MQTT通信
  • 实现MQTT客户端功能;
  • 配置目标服务器地址、端口;
  • 发布和订阅指定主题。

3. 数据解析

  • 解析数据流中的控制命令

4. 数据分发

  • 将解析出来的数据分发到其他模块

  业务开发

可通过 EsDA MPC-ZC1 入门篇相关文章,掌握 EsDA 基本开发流程:

一、串口通信

实现串口通信模块,需要使用到串口相关的 AWFlow 节点,包括 serial_ex、serial_in_ex、serial_out_ex 3个节点。
1. 节点介绍
1.1 serial_ex
串口配置节点,属于隐式节点,不会被显示在画布中,需要配套对应的功能节点一起使用。
1.1.1 属性

  • 名称(name): 节点名称,用于索引查找本节点;
  • 显示名称(displayName): 用于画布上显示的名称;
  • 端口(port): 用于索引串口设备;
  • 波特率(baudrate): 串口波特率参数;
  • 字节大小(bytesize): 数据位参数;
  • 奇偶校验(parity): 串口奇偶校验位参数;
  • 停止位(stopbits): 串口停止位参数;
  • 流控(flowcontrol): 串口流控模式配置;
  • 帧超时(frame_timeout): 收到数据后的总体等待时间;
  • 帧长度(frame_length): 期望收据的数据长度;
  • 码间超时(intersymbol_timeout): 字节间的最大超时时间。

其中 帧超时、帧长度、码间超时 可用于分包应用,3个参数可同时使用,任意一个条件满足都会触发分包。

* 配置节点(config类型)只存在节点属性,不具备输入输出功能。

1.2 serial_in_ex

串口接收节点,负责读取指定串口接收到的数据。
1.2.1 属性
  • 名称(name): 节点名称,用于索引查找本节点;

  • 显示名称(displayName): 用于画布上显示的名称;

  • 配置节点名称(config): 绑定一个串口配置节点;
1.2.2 输入
* pump类型节点通常不具备数据输入。
1.2.3 输出
  • payload: 读取到串口接收的数据,字符串(可按二进制提取);

  • payloadLength: 数据长度,uint32_t 类型;

  • payloadType: payload 的数据类型,用于后续节点数据处理;

  • istream: 数据流对象,保存着串口接收的原始数据流;

*当帧超时、帧长度、码间超时 其中任意参数有效时,输出payload 格式,否则输出 istream
1.3 serial_out_ex

串口发送节点,将上级节点输出的数据发送至串口发送接口。

1.3.1 属性
  • 名称(name): 节点名称,用于索引查找本节点;

  • 显示名称(displayName): 用于画布上显示的名称;

  • 配置节点名称(config): 绑定一个串口配置节点。

1.3.2 输入
  • payload: 负载数据,字符串类型(也可按二进制转换);

  • payloadLength: 负载数据长度,uint32_t类型;

  • payloadType: 指示payload的数据类型;

  • istream: 数据流对象。

* 支持输入 payload istream 数据,优先使用 istream

1.3.3 输出

* sink类型节点通常不具备数据输出。

2. 回发验证

我们通过一个串口数据回发功能来验证串口通信模块。

2.1 添加节点

添加 serial_in_ex 和 serial_out_ex 节点到画布上。

2.2 配置节点

双击 serial_in_ex 节点,打开属性面板。

选择 “添加新的 serial_ex 节点” ,点击编辑配置,进入配置节点属性面板。

  • 串口设备:Uart1;

  • 波特率:115200;

  • 字节大小:8bits;

  • 奇偶校验:None

  • 停止位:1bits;

  • 流控:None;

  • 帧超时:100;

  • 帧长度:0;

  • 码间超时:0。

点击添加,完成配置。

可以看到已经创建了一个新的配置节点,名为 serial_ex,继续点击完成,结束接收节点的配置。

同样的,双击 serial_out_ex 节点,打开属性面板,直接选择刚刚创建的配置节点。

点击完成,保存配置。

2.3 绘制流图

将 serial_in_ex 与 serial_out_ex 节点进行连接。

2.4 下载验证

确保硬件正确连接。

选择流图下载接口。

点击下载。

完成流图下载,通过串口工具进行数据回发测试。

二、MQTT通信

实现 MQTT 通信模块,需要使用到相关的AWFlow节点,包括 mqtt_configmqtt_in、mqtt_out 3个节点。

1. 节点介绍

1.1 mqtt_config

MQTT 配置节点,属于隐式节点,不会被显示在画布中,需要配套对应的功能节点一起使用。

1.1.1

  • 名称(name): 节点名称,用于索引查找本节点;

  • 显示名称(displayName: 用于画布上显示的名称;

  • 主机地址(host): 目标服务器域名(IP地址);

  • 端口(port): 目标服务器网络端口;

  • 重连间隔(retry-interval):MQTT后台服务重连时间间隔,单位毫秒;

  • 客户端ID(client-id):MQTT客户端ID;

  • 用户名(user-name):MQTT客户端用户名;

  • 密码(password):MQTT客户端密码;

  • 保活包发送间隔(keep-alive-interval): 保活数据包发送周期,单位秒;

  • 清除会话(clean-session): 使能自动清除历史会话;

  • 上线主题服务质量等级(online-topic-qos): 上线QoS服务质量;

  • 上线主题(online-topic-topic): 上线主题;

  • 上线主题数据(online-topic-data): 上线主题数据;

  • 遗嘱主题服务质量等级(last-will-qos): 遗嘱QoS服务质量;

  • 遗嘱主题(last-will-topic): 遗嘱主题;

  • 遗嘱主题数据(last-will-data): 遗嘱主题数据;

  • 使能SSL(enable-ssl): 使能SSL加密功能;

  • 根证书路径(root-ca-ssl): 根证书文件全路径;

  • 客户端证书路径(client-certificate-path): 客户端证书文件全路径;

  • 客户端密钥路径(client-private-key-path): 客户端密钥文件全路径。

MQTT 配置属性项比较多,但好在节点中已经内置了常用的默认配置,用户仅需根据应用修改所需属性项即可。

* 配置节点(config类型)只存在节点属性,不具备输入输出功能。

1.2 mqtt_in

MQTT 订阅节点,提供订阅指定主题的功能。

1.2.1 属性

  • 名称(name): 节点名称,用于索引查找本节点;
  • 显示名称(displayName): 用于画布上显示的名称;
  • 主题(topic): 配置需要订阅的主题;
  • 消息质量(qos):QoS主题服务质量等级;
  • 配置(config): 绑定一个MQTT配置节点。
1.2.2 输入

pump类型节点通常不具备数据输入。

1.2.3 输出
  • topic: 主题标识,字符串类型;
  • payload: 负载数据,指针(pointer)类型;
  • payloadLength: 负载数据长度,uint32_t类型。
1.3 mqtt_out

MQTT 发布节点,向服务器发布指定主题数据。

1.3.1 属性
  • 名称(name): 节点名称,用于索引查找本节点;

  • 显示名称(displayName): 用于画布上显示的名称;

  • 消息质量(qos):QoS主题服务质量等级;

  • 保留标志(retain): 使能主题信息在服务器保留;

  • 主题(topic): 发布的主题;

  • 配置(config): 绑定一个MQTT配置节点。

1.3.2 输入

  • topic: 发布主题名称;
  • payload: 负载数据;
  • payloadLength: 负载数据长度,uint32_t类型;

1.3.3 输出

* sink类型节点通常不具备数据输出。
2. 回发验证
我们通过一个MQTT数据回发功能来验证MQTT通信模块。
2.1 添加节点
添加 mqtt_in 和 mqtt_out 节点到画布上。

2.2 配置节点

双击 mqtt_in_ex 节点,打开属性面板。

选择 “添加新的 mqtt 节点” ,点击编辑配置,进入配置节点属性面板。

该节点已经内置好大部分常用的配置信息,此处,我们仅修改3个必须的属性项:

  • 主机地址:broker.emqx.io;

  • 端口号:1883;

  • 重连间隔:1000。

点击添加,完成配置。

可以看到已经创建了一个新的配置节点,名为 mqtt,同时我们配置一个订阅主题 EsDA-MQTT-Down ,继续点击完成,结束接收节点的配置。

同样的,双击 mqtt_out 节点,打开属性面板,直接选择刚刚创建的配置节点,同时配置一个发布主题 EsDA-MQTT-Up 。

点击完成,保存配置。

2.3 绘制流图

将 mqtt_in 与 mqtt_out 节点进行连接。

2.4 下载验证

确保硬件正确连接,需要4G天线,以及一张可正常联网的SIM卡。

选择流图下载接口。

点击下载。

完成流图下载后,可通过MQTT客户端工具进行数据回发测试。

此处我们选择 MQTTX,下载链接

https://www.emqx.com/zh/downloads/MQTTX/1.8.2/MQTTX-Setup-1.8.2-x64.exe

下载结束并完成MQTTX客户端的安装,启动MQTTX客户端软件。

点击新建连接,创建MQTT连接,如下进行配置。

点击连接,完成客户端配置,进入连接后,添加订阅主题。

订阅 MPC-ZC1 发布的主题 EsDA-MQTT-Up 。

最后发布 MPC-ZC1 订阅的主题 EsDA-MQTT-Down 。

输入发布的内容 EsDA MQTT Test Message!,点击发布主题,随后可以收到 MPC-ZC1 回发同样的内容。

三、串口MQTT透传

前面我们已经完成串口通信、MQTT通信功能,并进行数据回发测试,接下来我们要完成本项目的核心功能,串口与MQTT服务器之间的数据透明传输。

从前面两次数据回发的流图中,我们很容易想象到如下图所示的方式进行流图变换。

没错,只需将2条回发的数据流进行交换连接,即可达到2个通信接口的数据透明传输。
为了流图简洁性,我们进行节点的位置调整,如下所示。

下载流图,进行透传测试,效果如下图。

至此,我们完成串口服务器的核心功能,数据透明传输。后续我们会继续围绕串口服务器项目,进行业务的扩展,增加透传命令来控制设备上的LED。

【版权声明】本文为ZLG开发者社区用户原创内容,未经授权不得转载。欢迎更多用户到社区交流互动、创作博文,一经采用,可获得百元京东E卡。

地址:https://developer.zlg.cn(长按复制到PC端打开)

评论
  • 高速先生成员--黄刚这不马上就要过年了嘛,高速先生就不打算给大家上难度了,整一篇简单但很实用的文章给大伙瞧瞧好了。相信这个标题一出来,尤其对于PCB设计工程师来说,心就立马凉了半截。他们辛辛苦苦进行PCB的过孔设计,高速先生居然说设计多大的过孔他们不关心!另外估计这时候就跳出很多“挑刺”的粉丝了哈,因为翻看很多以往的文章,高速先生都表达了过孔孔径对高速性能的影响是很大的哦!咋滴,今天居然说孔径不关心了?别,别急哈,听高速先生在这篇文章中娓娓道来。首先还是要对各位设计工程师的设计表示肯定,毕竟像我
    一博科技 2025-01-21 16:17 168浏览
  • 数字隔离芯片是一种实现电气隔离功能的集成电路,在工业自动化、汽车电子、光伏储能与电力通信等领域的电气系统中发挥着至关重要的作用。其不仅可令高、低压系统之间相互独立,提高低压系统的抗干扰能力,同时还可确保高、低压系统之间的安全交互,使系统稳定工作,并避免操作者遭受来自高压系统的电击伤害。典型数字隔离芯片的简化原理图值得一提的是,数字隔离芯片历经多年发展,其应用范围已十分广泛,凡涉及到在高、低压系统之间进行信号传输的场景中基本都需要应用到此种芯片。那么,电气工程师在进行电路设计时到底该如何评估选择一
    华普微HOPERF 2025-01-20 16:50 131浏览
  •     IPC-2581是基于ODB++标准、结合PCB行业特点而指定的PCB加工文件规范。    IPC-2581旨在替代CAM350格式,成为PCB加工行业的新的工业规范。    有一些免费软件,可以查看(不可修改)IPC-2581数据文件。这些软件典型用途是工艺校核。    1. Vu2581        出品:Downstream     
    电子知识打边炉 2025-01-22 11:12 149浏览
  • 2024年是很平淡的一年,能保住饭碗就是万幸了,公司业绩不好,跳槽又不敢跳,还有一个原因就是老板对我们这些员工还是很好的,碍于人情也不能在公司困难时去雪上加霜。在工作其间遇到的大问题没有,小问题还是有不少,这里就举一两个来说一下。第一个就是,先看下下面的这个封装,你能猜出它的引脚间距是多少吗?这种排线座比较常规的是0.6mm间距(即排线是0.3mm间距)的,而这个规格也是我们用得最多的,所以我们按惯性思维来看的话,就会认为这个座子就是0.6mm间距的,这样往往就不会去细看规格书了,所以这次的运气
    wuliangu 2025-01-21 00:15 373浏览
  • 故障现象 一辆2007款日产天籁车,搭载VQ23发动机(气缸编号如图1所示,点火顺序为1-2-3-4-5-6),累计行驶里程约为21万km。车主反映,该车起步加速时偶尔抖动,且行驶中加速无力。 图1 VQ23发动机的气缸编号 故障诊断接车后试车,发动机怠速运转平稳,但只要换挡起步,稍微踩下一点加速踏板,就能感觉到车身明显抖动。用故障检测仪检测,发动机控制模块(ECM)无故障代码存储,且无失火数据流。用虹科Pico汽车示波器测量气缸1点火信号(COP点火信号)和曲轴位置传感器信
    虹科Pico汽车示波器 2025-01-23 10:46 95浏览
  • 嘿,咱来聊聊RISC-V MCU技术哈。 这RISC-V MCU技术呢,简单来说就是基于一个叫RISC-V的指令集架构做出的微控制器技术。RISC-V这个啊,2010年的时候,是加州大学伯克利分校的研究团队弄出来的,目的就是想搞个新的、开放的指令集架构,能跟上现代计算的需要。到了2015年,专门成立了个RISC-V基金会,让这个架构更标准,也更好地推广开了。这几年啊,这个RISC-V的生态系统发展得可快了,好多公司和机构都加入了RISC-V International,还推出了不少RISC-V
    丙丁先生 2025-01-21 12:10 745浏览
  • 飞凌嵌入式基于瑞芯微RK3562系列处理器打造的FET3562J-C全国产核心板,是一款专为工业自动化及消费类电子设备设计的产品,凭借其强大的功能和灵活性,自上市以来得到了各行业客户的广泛关注。本文将详细介绍如何启动并测试RK3562J处理器的MCU,通过实际操作步骤,帮助各位工程师朋友更好地了解这款芯片。1、RK3562J处理器概述RK3562J处理器采用了4*Cortex-A53@1.8GHz+Cortex-M0@200MHz架构。其中,4个Cortex-A53核心作为主要核心,负责处理复杂
    飞凌嵌入式 2025-01-24 11:21 83浏览
  • 本文介绍瑞芯微开发板/主板Android配置APK默认开启性能模式方法,开启性能模式后,APK的CPU使用优先级会有所提高。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。源码修改修改源码根目录下文件device/rockchip/rk3562/package_performance.xml并添加以下内容,注意"+"号为添加内容,"com.tencent.mm"为AP
    Industio_触觉智能 2025-01-17 14:09 218浏览
  •  万万没想到!科幻电影中的人形机器人,正在一步步走进我们人类的日常生活中来了。1月17日,乐聚将第100台全尺寸人形机器人交付北汽越野车,再次吹响了人形机器人疯狂进厂打工的号角。无独有尔,银河通用机器人作为一家成立不到两年时间的创业公司,在短短一年多时间内推出革命性的第一代产品Galbot G1,这是一款轮式、双臂、身体可折叠的人形机器人,得到了美团战投、经纬创投、IDG资本等众多投资方的认可。作为一家成立仅仅只有两年多时间的企业,智元机器人也把机器人从梦想带进了现实。2024年8月1
    刘旷 2025-01-21 11:15 724浏览
  • 临近春节,各方社交及应酬也变得多起来了,甚至一月份就排满了各式约见。有的是关系好的专业朋友的周末“恳谈会”,基本是关于2025年经济预判的话题,以及如何稳定工作等话题;但更多的预约是来自几个客户老板及副总裁们的见面,他们为今年的经济预判与企业发展焦虑而来。在聊天过程中,我发现今年的聊天有个很有意思的“点”,挺多人尤其关心我到底是怎么成长成现在的多领域风格的,还能掌握一些经济趋势的分析能力,到底学过哪些专业、在企业管过哪些具体事情?单单就这个一个月内,我就重复了数次“为什么”,再辅以我上次写的:《
    牛言喵语 2025-01-22 17:10 202浏览
  • 现在为止,我们已经完成了Purple Pi OH主板的串口调试和部分配件的连接,接下来,让我们趁热打铁,完成剩余配件的连接!注:配件连接前请断开主板所有供电,避免敏感电路损坏!1.1 耳机接口主板有一路OTMP 标准四节耳机座J6,具备进行音频输出及录音功能,接入耳机后声音将优先从耳机输出,如下图所示:1.21.2 相机接口MIPI CSI 接口如上图所示,支持OV5648 和OV8858 摄像头模组。接入摄像头模组后,使用系统相机软件打开相机拍照和录像,如下图所示:1.3 以太网接口主板有一路
    Industio_触觉智能 2025-01-20 11:04 200浏览
  • Ubuntu20.04默认情况下为root账号自动登录,本文介绍如何取消root账号自动登录,改为通过输入账号密码登录,使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、Android等操作系统,接口丰富,开发评估快人一步!添加新账号1、使用adduser命令来添加新用户,用户名以industio为例,系统会提示设置密码以及其他信息,您可以根据需要填写或跳过,命令如下:root@id
    Industio_触觉智能 2025-01-17 14:14 154浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦