【EsDA应用】如何利用AWFlow搭建HTTP服务器

原创 ZLG致远电子 2023-12-13 11:44
本文将基于EsDA开发套件快速在开发板上搭建HTTP服务器,为HTTP客户端提供了访问板子的外设资源,数据以及文件读写等接口,实现设备与网络服务的互联互通。


  项目简介
在物联网应用中,在开发板上搭建HTTP服务器是一项很重要的技术,可以实现设备间的数据通信和远程控制。本文将介绍如何使用 EPC6450-AWI开发板 ,以及图形化设计工具AWFlow Designer搭建HTTP服务器,对设备数据进行远程访问和控制。

  项目概述
当客户端发送HTTP请求时,服务器接收请求,并根据请求的内容做出相应的处理,如读写开发板资源的配置和数据,读写文件等操作。开发板搭建的HTTP服务器,通过HTTP协议与客户端进行通信。本文HTTP服务器的项目可为客户端提供以下五个接口:
  1. 写内容到开发板的文件中;
  2. 读开发板中的文件内容;
  3. 提供读取ADC通道的电压值;
  4. 提供读取温湿度传感器的温度值和湿度值;
  5. 供设置Modbus从站的寄存器值。本项目采用的Modbus从站是模拟Modbus从站设备的上位机Modbus Slave(工具使用请见【EsDA 应用】Modbus RTU Master 转 MQTT 的“3.2.4、Modbus Slave安装并使用”章节)。

  前期准备

读者可以阅读以下文章对HTTP通信和EsDA的一些基础项目操作进行熟络:
  • 【EsDA 应用】快速实现串口转HTTP请求

  • 【EsDA应用】Modbus应用详解

  • 【EsDA应用】5分钟实现一个串口通信业务

  • 【EsDA 应用】常用IO设备节点详解

1. 硬件准备

  • 在标有丝印为TF Card 丝印的卡槽处,插入SD卡
  • 在标有丝印为DUART的调试串口模块上,将TTL转USB串口模块的TX与板子丝印为RXD连接,TTL转USB串口模块的RX与板子丝印为TXD相连;并将TTL转USB串口模块的USB端口接入电脑。
  • 在标有丝印为Type-C 的接口处,插上Type-C线,并将Type-C线的另一端USB口插入电脑。
  • 在标有丝印为NET0 或 NET1的RJ45插座处接上网线的水晶头,网线另一端的水晶头插在PC的网络接口处。

1.1 提供温湿度传感器值的接口项目

在标有丝印为 5V 的排针针脚处接上温湿度变送器的 DC5V_+ 引脚;在标有丝印为 GND 的排针针脚处接上温湿度变送器的 DC5V_- 引脚;在标有丝印为 485A 的排针针脚处接上温湿度变送器的 RS485_A 的引脚;在标有丝印为 485B 的排针针脚处接上温湿度变送器的 RS485_B 的引脚上。

1.2 设置Modbus从站寄存器值的接口项目

在标有丝印位 5V 的排针针脚处接上USB转485串口设备的 +5V 电源引脚;在标有丝印位 GND 的排针针脚处接上USB转485串口设备的 GND 接地引脚;在标有丝印位 485A 的排针针脚处接上USB转485串口设备的 RS485A引脚;在标有丝印位 485B 的排针针脚处接上USB转485串口设备的 RS485B引脚。

2. 网络搭建

打开串口调试助手,检索并打开TTL转USB串口模块的设备端口号后,使用shell命令ip addr,查看网口的IP地址,根据下图可知,本文使用的网口设备IP地址是192.168.137.251。

配置PC上的以太网的IP与开发板的IP地址在同一局域网下。
在串口调试助手输入shell指令ping 192.168.137.223,ping成功即开发板可以单方面ping成功PC,若ping失败则可以关闭PC端的防火墙之后再尝试。
电脑端执行 WIN+R 输入cmd 回车即可打开CMD命令提示符窗口,执行ping 192.168.137.251,ping成功则电脑可以单方面ping成功开发板。当开发板和PC可以互ping成功则联网成功。

  项目实施
1. 写文件接口

本接口业务主要是将写入的文件内容通过HTTP客户端发送POST请求上传到HTTP服务器,服务器收到请求后做出相应处理。可分为以下四个部分:

  • 用户在HTTP客户端的body中编辑需要写入的文件内容;

  • HTTP客户端设置服务器对应的url接口和请求方式,向开发板搭建的HTTP服务器发送HTTP请求;

  • HTTP服务器监听指定端口,处理对应接口的请求并响应;

  • 查看写入到文件的内容,检验是否成功通过开发板搭建的HTTP服务器提供的接口,实现远程文件内容的输入。

1.1 流图绘制

添加http_in,fscript,http_out,timer,fscript和fileout节点到画布中并连线如下图。

1.2 节点配置

双击http_in节点,该节点主要是给HTTP客户端提供一个POST方法的写文件内容的接口,统一资源定位符可以根据用户需要更改。点击完成按钮即可保存配置。

点击http_server旁边的铅笔图标对http_server节点进行配置,通常情况下修改访问的端口号即可,点击更新按钮即可保存配置。

本项目其他的接口都是在同一个HTTP服务器上处理,所以后续的接口添加新的http_in节点,直接选中之前配置好的http_server,不用再重新添加新的http_server节点(不用重新创建一个http_server)。后面的接口项目不再赘述。

双击http_in节点的消费者节点fscript,该节点主要是接收HTTP客户端上传消息体的内容,并将接收写文件接口请求的标志位置一。点击完成按钮即可保存配置。

global.put_file_status = 1global.putfile = str(msg.payload,true)
双击http_out节点,可以根据用户实际需要设置响应码和消息头,本项目使用默认的就可以了。点击完成按钮即可保存配置。

双击timer节点,设置定时写入文件的周期时间。
双击timer的消费者节点fscript,该节点主要是处理当写文件接口的http_in节点被触发时那么put_file_status(写文件标志位)置一,之后才将收到的请求体的内容写入文件中。
if(global.put_file_status == 1) {    wb = wbuffer_create()    wbuffer_write_string(wb,global.putfile)
   output.payload = wbuffer_get_data(wb)    output.payloadLength = len(global.putfile)    global.put_file_status = 0}
双击fileout节点,可根据用户需要配置属性参数。因为本项目的数据来源是从前节点fscript的payload中获取的,所以属性数据来源选择payload选项。
1.3 流图下载

绘制完流图后,点击CTRL+S 即可保存流图,点击下载流图。

在HTTP客户端postman上发起写文件请求,HTTP服务器收到请求后将写入的内容作为响应返回到客户端进行显示,并执行写文件的操作,在串口调试助手上输入cat flow/test.txt即可看到写入文件的内容。结果如下图所示则表示HTTP服务器搭建写文件的接口已基本实现。

2. 读文件接口

本接口业务主要是HTTP客户端发送GET方法读文件请求,HTTP服务器接收到请求之后将文件内容作为响应返回到客户端进行显示。可分为以下两个部分:
  • HTTP客户端设置读文件的url接口和请求方式,向开发板搭建的HTTP服务器发送HTTP请求;

  • HTTP服务器监听指定端口,接收到读文件的请求后将读文件标志位置一,等待读取文件内容,并将读到的内容作为响应发送到HTTP客户端。

2.1 流图绘制

添加http_in,fscript,http_out,timer和filein节点到画布中并连线如下图。

2.2 节点配置

双击http_in节点,该节点主要是给HTTP客户端提供一个GET方法的读文件内容的接口,统一资源定位符可以根据用户需要更改。点击完成按钮即可保存配置。

双击http_in的消费者节点fscript,该节点的主要功能是当HTTP服务器接收到了来自客户端的读文件接口的请求,那么将读文件标志位(get_file_status)置一,延时等待读取文件的业务,最后将读取到的数据作为响应发送到HTTP客户端。

global.get_file_status = 1sleep_ms(500)msg.payload = "you get file data is "+global.getfile
http_out节点在本项目中使用默认参数值即可。
双击timer配置定时读文件的周期时间。

双击timer的消费者节点fscript,该节点主要是检测读文件标志位(get_file_status)置一时,设置filein节点的配置参数。点击完成即可保存配置。

if(global.get_file_status == 1) {    set(msg.topic, "exec:read_all")    set(msg.payload, 4096)    global.get_file_status = 0}
双击filein节点,配置需要读取的文件名。点击完成即可保存配置。

双击filein的消费者节点fscript,该节点主要是将filein节点读取出来的文件内容,赋值给可供其他节点访问的全局参数。点击完成即可保存配置。

global.getfile = str(msg.payload, true)

2.3 流图下载

绘制完流图后,点击CTRL+S 即可保存流图,点击下载流图。

在postman中发送HTTP客户端GET方法的读文件请求,后续可以在响应报文部分看到由HTTP服务器发出的读取文件内容的响应正文。结果如下图所示则表示HTTP服务器搭建读文件的接口已基本实现。

3. 读取ADC通道值的接口

本接口业务主要是HTTP服务器提供ADC通道的电压值的接口,当HTTP客户端发起该请求时,HTTP服务器将采集到的ADC通道电压值作为响应返回到HTTP客户端进行显示。可分为以下两个部分:

  • HTTP客户端设置服务器获取ADC通道值的url接口和请求方式,向开发板搭建的HTTP服务器发送HTTP请求;
  • HTTP服务器监听指定端口,接收到对应接口的请求后将采集到的ADC通道的电压值作为响应并发送到HTTP客户端。

3.1 流图绘制

添加http_in,fscript,http_out和adc节点到画布中并连线如下图。

3.2 节点配置

双击http_in节点,该节点主要是给HTTP客户端提供一个GET方法的获取ADC通道电压值的接口,统一资源定位符可以根据用户需要更改。点击完成按钮即可保存配置。

双击http_in的消费者节点fscript,该节点主要目的是将采集到的ADC通道的电压值作为响应发送到HTTP客户端。点击完成即可保存配置。

var a = "adc status is "+ global.adc_valuewb = wbuffer_create()wbuffer_write_string(wb,a)msg.payload = wbuffer_get_data(wb)msg.payloadLength = len(a)

本项目中http_out节点使用默认配置即可。

双击adc节点,配置需要采集的通道号。点击完成即可保存配置。

双击adc的消费者节点fscript,该节点主要是将采集到的ADC电压值赋值给全局变量,供其他节点使用。点击完成即可保存配置。

global.adc_value="adc value is :"+" "+msg.payload + "mv"

3.3 流图下载

绘制完流图后,点击CTRL+S 即可保存流图,点击下载流图。

在postman中发送HTTP服务器提供的采集ADC通道值的接口请求,后续可以在响应部分看到HTTP服务器返回的实时采集到的ADC电压值。结果如下图所示则表示HTTP服务器搭建的获取ADC通道电压值的接口已基本实现。

4. 提供读取传感器值的接口

本接口业务主要是HTTP服务器提供温湿度传感器采集的温度和湿度值的接口,当HTTP客户端发起该请求时,HTTP服务器将采集的温湿度值作为响应返回到HTTP客户端进行显示。可分为以下两个部分:

  • HTTP客户端设置获取温湿度传感器值的url接口和请求方式,向开发板搭建的HTTP服务器发送HTTP请求;
  • HTTP服务器监听指定端口,接收到对应接口的请求后将采集到的温湿度值作为响应并发送到HTTP客户端。

4.1 流图绘制

添加http_in,fscript,http_out,modbus_master_in和modbus_parse_in节点到画布中并连线如下图。

4.2 节点配置

双击http_in节点,该节点主要是给HTTP客户端提供一个POST方法的接收温湿度传感器数据的接口,统一资源定位符可以根据用户需要更改。点击完成按钮即可保存配置。

双击http_in节点的消费者节点fscript,该节点主要处理是将采集到的温湿度传感器的值作为响应发送给HTTP客户端。点击完成按钮即可保存配置。

msg.payload = global.temp_value
http_out节点配置在本项目中不需要任何更改,使用默认配置即可。
双击modbus_master_in节点,配置温湿度传感器从站的相关配置信息如下。点击完成即可保存配置。

点击modbus_master_in节点的属性主机参数配置旁边的铅笔图标,因为是通过RS485进行Modbus通信,所以选择rtu传输模式并选择对应的串口设备名,其他串口参数配置根据实际需要进行配置,点击更新即可保存配置。

双击modbus_parse_in节点,因为地址0是温度值,1是湿度值,所以配置节点参数如下所示。点击完成即可保存配置。

双击modbus_parse_in的消费者节点fscript,本节点主要是解析处理采集到的数据,并赋值给可供其他节点使用的全局变量。点击完成即可保存配置。

global.temp_value = "temp:"+array_get(msg.payload,0)/10+"C, "+"humi:"+array_get(msg.payload,1)/10+"RH"

4.3 流图下载

绘制完流图后,点击CTRL+S 即可保存流图,点击下载流图。

在postman中发送HTTP服务器提供的采集温湿度传感器值的接口请求,后续可以在响应部分看到HTTP服务器返回的温度值和湿度值。结果如下图所示则表示HTTP服务器搭建的获取温湿度传感器值的接口已基本实现。

5. 设置Modbus从站寄存器值的接口

本接口业务主要是将需要写入的Modbus从站寄存器值通过HTTP客户端发送POST请求上传到HTTP服务器,服务器收到请求后做出相应处理。可分为以下四个部分:

  • 用户在HTTP客户端的body中编辑需要写入的Modbus从站寄存器值内容;

  • HTTP客户端设置对应的url接口和请求方式,向开发板搭建的HTTP服务器发送HTTP请求;

  • HTTP服务器监听指定端口,处理对应接口的请求并响应;

  • 查看写入到Modbus从站寄存器的内容,检验是否成功通过开发板搭建的HTTP服务器提供的接口,实现Modbus从站寄存器值的远程输入。

5.1 流图绘制

添加http_in,fscript,http_out,modbus_parse_out和modbus_master_out节点到画布中并连线如下图。

5.2 节点配置

双击http_in节点,该节点主要是给HTTP客户端提供一个POST方法的设置Modbus从站寄存器值的接口,统一资源定位符可以根据用户需要更改。点击完成按钮即可保存配置。

点击http_in的消费者节点fscript,该节点主要是处理将客户端发送的请求消息体解析为modbus_parse_out节点可以接收的类型。内容如下:

a = array_create();
str b = str(msg.payload,true)b = replace(b,',',":")data1 = one_of(b,1,":")data2 = one_of(b,3,":")data3 = one_of(b,5,":")array_insert(a, 0, u16(data1))array_insert(a, 1, u16(data2))array_insert(a, 2, u16(data3))
output.payload = a;output.slaveID = 1;output.address = 0;

本项目中http_out节点使用默认配置即可。

双击modbus_parse_out节点,配置需要从哪个寄存器开始写值。点击完成即可保存配置。

双击modbus_master_out节点,配置从机ID和写入的寄存器类型。点击完成即可保存配置。

双击modbus_master_out节点的属性主机参数配置旁边的铅笔图标,因为是通过RS485进行Modbus通信,所以选择rtu传输模式并选择对应的串口设备名,其他串口参数配置根据实际需要进行配置,点击更新即可保存配置。

5.3 流图下载

绘制完流图后,点击CTRL+S 即可保存流图,点击下载流图。

在postman中发送HTTP服务器提供的设置Modbus从站寄存器值的接口请求,后续可以在Modbus Slave上位机中查看写入的寄存器的值。结果如下图所示则表示HTTP服务器搭建的设置Modbus从站寄存器值的接口已基本实现。


  关联产品

  技术交流群
长按识别如下二维码可加入“EsDA嵌入式系统设计自动化交流群”,与志同道合的朋友交流,并有专业技术人员为您答疑解惑,如有问题可以咨询小致微信zlgmcu-888。

更多往期文章,请点击“ 阅读原文 ”。

评论
  •     IPC-2581是基于ODB++标准、结合PCB行业特点而指定的PCB加工文件规范。    IPC-2581旨在替代CAM350格式,成为PCB加工行业的新的工业规范。    有一些免费软件,可以查看(不可修改)IPC-2581数据文件。这些软件典型用途是工艺校核。    1. Vu2581        出品:Downstream     
    电子知识打边炉 2025-01-22 11:12 55浏览
  • 日前,商务部等部门办公厅印发《手机、平板、智能手表(手环)购新补贴实施方案》明确,个人消费者购买手机、平板、智能手表(手环)3类数码产品(单件销售价格不超过6000元),可享受购新补贴。每人每类可补贴1件,每件补贴比例为减去生产、流通环节及移动运营商所有优惠后最终销售价格的15%,每件最高不超过500元。目前,京东已经做好了承接手机、平板等数码产品国补优惠的落地准备工作,未来随着各省市关于手机、平板等品类的国补开启,京东将第一时间率先上线,满足消费者的换新升级需求。为保障国补的真实有效发放,基于
    华尔街科技眼 2025-01-17 10:44 221浏览
  • 本文介绍瑞芯微开发板/主板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 164浏览
  •  万万没想到!科幻电影中的人形机器人,正在一步步走进我们人类的日常生活中来了。1月17日,乐聚将第100台全尺寸人形机器人交付北汽越野车,再次吹响了人形机器人疯狂进厂打工的号角。无独有尔,银河通用机器人作为一家成立不到两年时间的创业公司,在短短一年多时间内推出革命性的第一代产品Galbot G1,这是一款轮式、双臂、身体可折叠的人形机器人,得到了美团战投、经纬创投、IDG资本等众多投资方的认可。作为一家成立仅仅只有两年多时间的企业,智元机器人也把机器人从梦想带进了现实。2024年8月1
    刘旷 2025-01-21 11:15 399浏览
  • 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 122浏览
  • 嘿,咱来聊聊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 112浏览
  •  光伏及击穿,都可视之为 复合的逆过程,但是,复合、光伏与击穿,不单是进程的方向相反,偏置状态也不一样,复合的工况,是正偏,光伏是零偏,击穿与漂移则是反偏,光伏的能源是外来的,而击穿消耗的是结区自身和电源的能量,漂移的载流子是 客席载流子,须借外延层才能引入,客席载流子 不受反偏PN结的空乏区阻碍,能漂不能漂,只取决于反偏PN结是否处于外延层的「射程」范围,而穿通的成因,则是因耗尽层的过度扩张,致使跟 端子、外延层或其他空乏区 碰触,当耗尽层融通,耐压 (反向阻断能力) 即告彻底丧失,
    MrCU204 2025-01-17 11:30 182浏览
  • 2024年是很平淡的一年,能保住饭碗就是万幸了,公司业绩不好,跳槽又不敢跳,还有一个原因就是老板对我们这些员工还是很好的,碍于人情也不能在公司困难时去雪上加霜。在工作其间遇到的大问题没有,小问题还是有不少,这里就举一两个来说一下。第一个就是,先看下下面的这个封装,你能猜出它的引脚间距是多少吗?这种排线座比较常规的是0.6mm间距(即排线是0.3mm间距)的,而这个规格也是我们用得最多的,所以我们按惯性思维来看的话,就会认为这个座子就是0.6mm间距的,这样往往就不会去细看规格书了,所以这次的运气
    wuliangu 2025-01-21 00:15 186浏览
  • 数字隔离芯片是一种实现电气隔离功能的集成电路,在工业自动化、汽车电子、光伏储能与电力通信等领域的电气系统中发挥着至关重要的作用。其不仅可令高、低压系统之间相互独立,提高低压系统的抗干扰能力,同时还可确保高、低压系统之间的安全交互,使系统稳定工作,并避免操作者遭受来自高压系统的电击伤害。典型数字隔离芯片的简化原理图值得一提的是,数字隔离芯片历经多年发展,其应用范围已十分广泛,凡涉及到在高、低压系统之间进行信号传输的场景中基本都需要应用到此种芯片。那么,电气工程师在进行电路设计时到底该如何评估选择一
    华普微HOPERF 2025-01-20 16:50 73浏览
  • 高速先生成员--黄刚这不马上就要过年了嘛,高速先生就不打算给大家上难度了,整一篇简单但很实用的文章给大伙瞧瞧好了。相信这个标题一出来,尤其对于PCB设计工程师来说,心就立马凉了半截。他们辛辛苦苦进行PCB的过孔设计,高速先生居然说设计多大的过孔他们不关心!另外估计这时候就跳出很多“挑刺”的粉丝了哈,因为翻看很多以往的文章,高速先生都表达了过孔孔径对高速性能的影响是很大的哦!咋滴,今天居然说孔径不关心了?别,别急哈,听高速先生在这篇文章中娓娓道来。首先还是要对各位设计工程师的设计表示肯定,毕竟像我
    一博科技 2025-01-21 16:17 101浏览
  • 现在为止,我们已经完成了Purple Pi OH主板的串口调试和部分配件的连接,接下来,让我们趁热打铁,完成剩余配件的连接!注:配件连接前请断开主板所有供电,避免敏感电路损坏!1.1 耳机接口主板有一路OTMP 标准四节耳机座J6,具备进行音频输出及录音功能,接入耳机后声音将优先从耳机输出,如下图所示:1.21.2 相机接口MIPI CSI 接口如上图所示,支持OV5648 和OV8858 摄像头模组。接入摄像头模组后,使用系统相机软件打开相机拍照和录像,如下图所示:1.3 以太网接口主板有一路
    Industio_触觉智能 2025-01-20 11:04 150浏览
  • 临近春节,各方社交及应酬也变得多起来了,甚至一月份就排满了各式约见。有的是关系好的专业朋友的周末“恳谈会”,基本是关于2025年经济预判的话题,以及如何稳定工作等话题;但更多的预约是来自几个客户老板及副总裁们的见面,他们为今年的经济预判与企业发展焦虑而来。在聊天过程中,我发现今年的聊天有个很有意思的“点”,挺多人尤其关心我到底是怎么成长成现在的多领域风格的,还能掌握一些经济趋势的分析能力,到底学过哪些专业、在企业管过哪些具体事情?单单就这个一个月内,我就重复了数次“为什么”,再辅以我上次写的:《
    牛言喵语 2025-01-22 17:10 41浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦