0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【Z站推荐】EsDA MPC-ZC1 应用——串口服务器(二)

ZLG致远电子 2022-09-02 10:13 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

上一章节介绍,实现了串口与MQTT服务器间的数据透明传输,本章节将在原有的基础上,增加 LED 控制业务,以此为例来介绍如何在透传数据流中增加必要的扩展业务。

4c04bde0-296c-11ed-9ade-dac502259ad0.jpg  简介

常见的串口服务器产品,在实现了数据透传业务的同时,会根据不同的应用场景扩展一些额外的辅助业务,如DI/DO、ADC采集等。

通过EsDAMPC-ZC1应用——串口服务器(一)章节,完成了串口MQTT服务器的核心业务,实现了串口与MQTT服务器间的数据透明传输。根据项目需求,本章节将在原有的基础上,增加 LED 控制业务。以此为例来介绍如何在透传数据流中增加必要的扩展业务。

4c04bde0-296c-11ed-9ade-dac502259ad0.jpg  业务扩展

一、数据解析增加系统控制业务,需要在流图中,对数据流进行数据解析,解析出系统所支持的控制命令和参数。

1. 命令格式

扩展控制命令前,先制定出命令格式,本示例以较为简易的方式实现了命令和参数的组合,如下所示。[command]@[parameter]以@作为分隔符,组合命令(command)参数(parameter),均为字符串类型。2. 节点介绍实现自定义的数据解析功能,通常需要开发符合需求的节点,或是直接通过脚本节点来实现。当功能比较简单的时,建议直接使用脚本节点(fscript)来实现。2.1 fscriptfscript 节点,支持用户自定义编辑一段可执行脚本,可以很灵活的完成一些简单的定制化业务。*关于 fscript 脚本教学可参考《FScript 脚本引擎》:

https://awtk.zlg.cn/pro/docs/awtk_docs/FScript/fscript.html

2.11 属性

4c202dc8-296c-11ed-9ade-dac502259ad0.png

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

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

加载时(Initialize):节点加载时运行的脚本;

运行时(Function):节点每次运行时的脚本;

销毁时(Finalize):节点销毁时运行的脚。

fscript 节点支持输入3段脚本,分别在节点加载、运行、销毁时进行调用,其中加载、销毁阶段的脚本仅被调用一次。

2.2 log

log 节点可以将数据流中的数据打印到调试接口上,方便用户观察数据流中的数据。2.2.1 属性

4c2e5218-296c-11ed-9ade-dac502259ad0.png

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

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

控制台(log_to_console):输出到系统控制台;

客户端(log_to_client):输出到AWFlow Designer客户端。

2.2.2 输入

  • payload:需要打印的数据;
  • payloadLength:数据长度,uint32_t类型;
  • payloadType:指示payload的数据类型。

3. 流图实践

3.1 添加log节点在原有的串口MQTT透传流图上,并入log节点,观察串口上报至MQTT服务的数据。4c4576fa-296c-11ed-9ade-dac502259ad0.png

3.2 下载并在线运行

选择下载流图,并保持在线运行,这样可以通过AWFlow Designer 客户端接收到 log 节点的消息。

4c62a7de-296c-11ed-9ade-dac502259ad0.png

通过串口助手,发送数据。

4c6eb9d4-296c-11ed-9ade-dac502259ad0.png

可以通过 AWFlow Designer 的调试窗口观察到串口发送的数据。

4c9173c0-296c-11ed-9ade-dac502259ad0.png

3.3 添加命令解析脚本

在 log 和串口输入数据流中,添加 fscript 节点。4c9eb6c0-296c-11ed-9ade-dac502259ad0.png仅在 Function 阶段输入命令解析脚本。4cb371c8-296c-11ed-9ade-dac502259ad0.png脚本先将输入的数据 msg.payload 转换成字符串类型,再通过 one_of 函数,以@分隔符,将字串分隔成2段,并分别赋值给 msg cmd arg 属性。

/*MQTT和串口节点输出为pointer类型,转换为string*/
rbuf=rbuffer_create(msg.payload,msg.payloadLength)
s_payload=rbuffer_read_string(rbuf)

/*以@分隔符,获取第一段字符串作为命令*/
msg.cmd=one_of(s_payload,0,"@")
/*以@分隔符,获取第二段字符串作为参数*/

msg.arg=one_of(s_payload,1,"@")

至此,实现了从字符串中解析出命令和参数的功能。

二、系统控制

系统控制模块,负责响应解析模块解析出来的命令,根据获得的命令和参数,执行响应的业务。本小节,以LED控制作为系统控制业务,实际应用可根据项目需求进行扩展。*本小节主要使用fscript来完成LED的控制业务,LED节点的使用可参考EsDAMPC-ZC1入门(二)——LED控制。

1. LED控制业务

1.1 添加控制脚本在数据解析脚本节点与log节点之间,并入一个新的 fscript 节点,用于执行LED控制业务。

4cc10edc-296c-11ed-9ade-dac502259ad0.png

4ce121f4-296c-11ed-9ade-dac502259ad0.png

LED 支持3路LED的控制命令,如下所示:

  • led_red@on / off,点亮/熄灭红灯;
  • blue_red@on / off,点亮/熄灭蓝灯;
  • green_red@on / off,点亮/熄灭绿灯。

通过控制命令 msg.cmd 来指定所需要控制LED设备,msg.arg 转换为LED控制参数。

/*LED控制命令作为设备名称,如led_red@on*/
output.device_name=msg.cmd

if(msg.arg=="on"){
/*点亮LED*/
output.payload=1
}elseif(msg.arg=="off"){
/*熄灭LED*/
output.payload=0
}else{
/*终止数据流*/
aborted=1

}

1.2 添加LED节点继控制脚本之后,串接3个LED节点。4cf3fa5e-296c-11ed-9ade-dac502259ad0.png分别绑定了 led_red、led_blue、led_green4d116dc8-296c-11ed-9ade-dac502259ad0.png4d1f5f50-296c-11ed-9ade-dac502259ad0.png4d31afac-296c-11ed-9ade-dac502259ad0.png

1.3 下载验证

下载流图。4d404698-296c-11ed-9ade-dac502259ad0.png

通过串口助手,发送控制命令。

4d5e258c-296c-11ed-9ade-dac502259ad0.png

可以看到,板载的 LED 已经能够正确响应串口的控制命令。

4d72cc26-296c-11ed-9ade-dac502259ad0.png

*注意:控制命令为字符串类型,所以命令需包含字符结束符'\0’。

三、数据分发

系统控制小节中,在完成LED控制的同时,可以观察到,MQTT服务器同样接收到了控制命令,但这并非所期望的效果。

4d90f48a-296c-11ed-9ade-dac502259ad0.png

为了解决这个问题,需要实现数据分发功能,对数据进行选择。可以通过 aswitch 节点实现数据流的流向选择。

1. 节点介绍

1.1 aswitch

1.1.1 属性

4da4963e-296c-11ed-9ade-dac502259ad0.png

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

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

检查全部(check_all):检查所有条件;

规则表达式(rules):数据分发依据的逻辑表达式;

输出数量(outputs):数据分发路径数量。

2. 分发规则

2.1 添加 aswitch 节点,并进行如下配置。4daf3b48-296c-11ed-9ade-dac502259ad0.png

禁止检查所有条件,即当遇到条件满足时,则不继续检查;

  • 输出路径数配置与逻辑条件一致为 4。

msg.cmd=="led_red"
msg.cmd=="led_green"
msg.cmd=="led_blue"

msg.payloadLength>0

前3个逻辑条件,通过 msg.cmd 进行判断,区分控制命令,如果遇到符合的控制命令,则不会继续匹配,后续的路径则不会被触发。

可以看到,在最后一条规则中,通过 msg.payloadLength 来匹配透传数据。

2.2接入数据分发节点

aswitch 串进数据分析和 LED控制脚本节点之间,同时将MQTT上报的数据路径修改为 aswitch 的透传数据输出口上,如下所示。4dc3be74-296c-11ed-9ade-dac502259ad0.png

2.3 下载验证

下载流图。4d404698-296c-11ed-9ade-dac502259ad0.png

通过串口助手,分别发送控制命令和透传数据。

4de7fee2-296c-11ed-9ade-dac502259ad0.png可以看到,此时MQTT服务器不会再接收到串口端的系统控制命令。4df7e4f6-296c-11ed-9ade-dac502259ad0.png至此,完成了数据分发模块。

四、远程控制

前面完成了数据解析系统控制数据分发等3大扩展业务模块,但是都是基于串口来实现,是否可以同时支持MQTT远程控制业务呢?

很显然,是可以的,而且通过复用前面的模块,可以很简单的实现远程控制功能。

1. 扩展数据分发条件

4dffdddc-296c-11ed-9ade-dac502259ad0.png

利用 msg.topic 属性来判断是否有来源于MQTT服务器的透传数据,将数据分发数量扩充到 5。

2. 调整MQTT下发数据流

将MQTT下发的数据接入到数据解析模块,同时将串口输出连接到数据分发的MQTT透传输出口上,如下所示进行调整。

4e1d6b7c-296c-11ed-9ade-dac502259ad0.png

3. 下载验证

下载流图。4d404698-296c-11ed-9ade-dac502259ad0.png

通过MQTTX,分别发布LED控制命令和透传数据。

4e40b334-296c-11ed-9ade-dac502259ad0.png

可以看到,板载的 LED 已经能够正确响应串口的控制命令。

4d72cc26-296c-11ed-9ade-dac502259ad0.png

同时串口端,仅收到透传数据。

4e70bbce-296c-11ed-9ade-dac502259ad0.png

至此,完成了远程控制功能。

五、整理流图至此,完成了EsDA MPC-ZC1应用——串口服务器(一)计划的所有需求。后续根据实际需求,在现有的流图基础上,继续扩展更多的控制命令能,将会十分简单。将流图进行整理,最终效果如下。4e838b1e-296c-11ed-9ade-dac502259ad0.png4e939c8e-296c-11ed-9ade-dac502259ad0.jpg4ea7fddc-296c-11ed-9ade-dac502259ad0.jpg

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    244

    文章

    24779

    浏览量

    693422
  • 服务器
    +关注

    关注

    14

    文章

    10440

    浏览量

    91849
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    1-16路串口服务器:工业级串口联网全场景解决方案

    为核心,打造覆盖1–16路全系列工业级串口服务器,为智能水务、智慧电力、智能制造、楼宇自控、污水处理等场景提供稳定、高效、易部署的串口转网解决方案。智联物联串口服
    的头像 发表于 05-18 14:02 67次阅读
    <b class='flag-5'>1</b>-16路<b class='flag-5'>串口服务器</b>:工业级<b class='flag-5'>串口</b>联网全场景解决方案

    动环监控中的串口服务器:连接传统设备与软件系统的电子元器件技术

    在动环监控领域,串口服务器(型号是NCS1)作为关键设备,承担着连接传统串口设备与现代网络系统的重要任务。其设计、研发与生产过程,均需严格遵循行业标准,确保设备的稳定性与兼容性。 设计与研发理念
    的头像 发表于 05-12 08:58 300次阅读

    17路UART,多串口服务器方案分享

    在工业领域,接入多路串口设备并实时采集数据,是十分常见的需求。 今天,我们分享基于全志T536处理的多串口服务器方案,依托原生17路串口的硬件优势,打造更简洁、高效、低成本的工业数据
    的头像 发表于 03-02 17:03 270次阅读
    17路UART,多<b class='flag-5'>串口服务器</b>方案分享

    麦米串口服务器:打通传统工业设备上云的“最后一公里”

    从工厂到交通再到楼宇、农牧业,串口服务器正以惊人的渗透力,成为传统设备与数字世界连接的“毛细血管”。麦米多功能串口服务器“多串口、全联网、通协议、能远程、高防护”减少复杂布线,组网简单,让传统设备焕发新生,以最小成本迈出数字化转
    的头像 发表于 01-13 17:00 755次阅读
    麦米<b class='flag-5'>串口服务器</b>:打通传统工业设备上云的“最后一公里”

    2026值得推荐的工业级串口服务器:捷宸电子IPCSUN DCOM660D 全场景解析

    无论是追求高性价比的中小企业,还是有严苛工业需求的大型企业,捷宸电子IPCSUN DCOM660D 工业级串口服务器都能提供适配的解决方案。在工业串口服务器选型、稳定型串口转网设备采购等场景中,这款兼具性能、稳定性与实用性的产品
    的头像 发表于 12-29 15:09 1143次阅读

    串口服务器产品解析与应用方案选型指南

    2025年,物联网(IoT)、工业互联网及智能化设备控制的快速发展使得串口服务器技术再次成为行业焦点。作为传统串口通信与现代网络技术的桥梁,串口服务器在工业自动化、能源管理、智慧城市等领域的应用日益
    的头像 发表于 11-18 15:33 941次阅读

    APort串口服务器,传统串口设备的智能化联网核心

    云等固有短板,成为制约设备智能化与能源数字化的瓶颈。APort100系列串口服务器正是针对这一行业痛点推出的核心通信设备,通过精准实现RS485串口信号与TCP/IP网络协议的双向转换,为传统设备搭建高效“联网桥梁”,助力企业快速完成设备智能化升
    的头像 发表于 11-14 15:37 455次阅读
    APort<b class='flag-5'>串口服务器</b>,传统<b class='flag-5'>串口</b>设备的智能化联网核心

    什么是串口服务器,它有哪些功能作用?

    在现代工业自动化和物联网系统中,大量传统设备仍通过串行接口进行通信。这些设备设计精良、性能稳定,但却因缺乏网络接口而难以融入现代工业网络。 串口服务器 的出现完美解决了这一困境,它作为一种高效的协议
    的头像 发表于 11-03 16:05 2068次阅读
    什么是<b class='flag-5'>串口服务器</b>,它有哪些功能作用?

    新品上新:NB12x、183x系列工业级多串口服务器

    新品上市NB系列多串口以太网通信服务器NB124/144/x-V2系列工业级4串口服务器NB124x-V2/NB144x-V2是亿佰特推出的工业级多串口服务器,支持RS232/RS48
    的头像 发表于 09-11 19:34 1335次阅读
    新品上新:NB12x、183x系列工业级多<b class='flag-5'>串口服务器</b>

    2025年串口服务器选购指南及应用方案详解

    随着物联网、工业自动化和智能化管理的快速发展,串口服务器成为连接传统设备与现代网络的重要桥梁。串口服务器可通过将串口设备与以太网连接,实现远程监控、数据采集和设备管理功能。2025年,市场上涌现出
    的头像 发表于 09-05 09:39 1012次阅读

    串口服务器技术详解:2025年行业标准与应用指南

    性能、更高安全性和更广泛应用场景的方向演进。 本文基于权威数据平台的分析,深入探讨串口服务器的基础技术、行业标准、主流品牌和应用案例,为企业在选购和部署串口服务器时提供全面参考。 一、串口服务器技术概述
    的头像 发表于 09-02 17:55 1925次阅读

    开疆智能ModbusTCP转Ethernet网关连接FBOX串口服务器配置案例

    本案例是串口服务器通过串口采集第三方设备数据转成ModbusTCP的服务器后欧姆龙PLC通过Ethernet连接到网关,读取采集到的数据。具体配置过程如下。 配置过程: Fbox做从
    的头像 发表于 08-15 18:00 1226次阅读
    开疆智能ModbusTCP转Ethernet网关连接FBOX<b class='flag-5'>串口服务器</b>配置案例

    串口服务器选型全攻略:开启高效通信新时代​

    在工业 4.0与物联网蓬勃发展的浪潮中,传统串口设备面临着融入现代网络体系的挑战。串口服务器作为连接串口设备与网络世界的桥梁,其重要性不言而喻。它能够将 RS-232、RS-485、RS-422等
    的头像 发表于 06-16 10:00 891次阅读
    <b class='flag-5'>串口服务器</b>选型全攻略:开启高效通信新时代​

    【教程】使用NS1串口服务器对接智普清言免费AI大语言模型

    AI大语言模型可以帮助我们解决各种问题,如翻译、写文案、创作诗歌、解决数学问题、情感陪伴等等。今天教大家如何使用NS1串口服务器模块实现对接智普清言AI大语言模型,实现与大语言模型的对话。NS1模块
    的头像 发表于 06-12 19:33 1013次阅读
    【教程】使用NS<b class='flag-5'>1</b><b class='flag-5'>串口服务器</b>对接智普清言免费AI大语言模型

    串口服务器:隔离485+232,双向透传

    串口服务器(Serial Device Server)是一种将传统串口设备(如RS-232、RS-485、RS-422等)连接到网络的硬件设备,其主要功能是将串口数据转换为网络数据,实现串口
    的头像 发表于 05-27 15:02 793次阅读