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

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

3天内不再提示

如何利用AWFlow搭建HTTP服务器

ZLG致远电子 2023-12-14 08:24 次阅读

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

353ed9ca-9a17-11ee-9788-92fbcf53809c.jpg  项目简介

物联网应用中,在开发板上搭建HTTP服务器是一项很重要的技术,可以实现设备间的数据通信和远程控制。本文将介绍如何使用EPC6450-AWI开发板,以及图形化设计工具AWFlow Designer搭建HTTP服务器,对设备数据进行远程访问和控制。
3542f168-9a17-11ee-9788-92fbcf53809c.jpg  项目概述当客户端发送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安装并使用”章节)。

354696c4-9a17-11ee-9788-92fbcf53809c.png

3542f168-9a17-11ee-9788-92fbcf53809c.jpg  前期准备

读者可以阅读以下文章对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口插入电脑。
  • 在标有丝印为NET0NET1RJ45插座处接上网线的水晶头,网线另一端的水晶头插在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引脚。35546eac-9a17-11ee-9788-92fbcf53809c.jpg

2. 网络搭建

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

35588b7c-9a17-11ee-9788-92fbcf53809c.png配置PC上的以太网的IP与开发板的IP地址在同一局域网下。355dd7d0-9a17-11ee-9788-92fbcf53809c.png在串口调试助手输入shell指令ping 192.168.137.223,ping成功即开发板可以单方面ping成功PC,若ping失败则可以关闭PC端的防火墙之后再尝试。35619122-9a17-11ee-9788-92fbcf53809c.png电脑端执行 WIN+R 输入cmd 回车即可打开CMD命令提示符窗口,执行ping 192.168.137.251,ping成功则电脑可以单方面ping成功开发板。当开发板和PC可以互ping成功则联网成功。356563e2-9a17-11ee-9788-92fbcf53809c.png
3542f168-9a17-11ee-9788-92fbcf53809c.jpg  项目实施1. 写文件接口

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

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

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

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

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

1.1 流图绘制

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

356d09f8-9a17-11ee-9788-92fbcf53809c.png1.2 节点配置

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

357d43d6-9a17-11ee-9788-92fbcf53809c.png

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

3582be1a-9a17-11ee-9788-92fbcf53809c.png

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

358696c0-9a17-11ee-9788-92fbcf53809c.png

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

global.put_file_status = 1global.putfile = str(msg.payload,true)

双击http_out节点,可以根据用户实际需要设置响应码和消息头,本项目使用默认的就可以了。点击完成按钮即可保存配置。

358a3622-9a17-11ee-9788-92fbcf53809c.png

双击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选项。358e1062-9a17-11ee-9788-92fbcf53809c.png1.3 流图下载

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

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

359847b2-9a17-11ee-9788-92fbcf53809c.png

2. 读文件接口

本接口业务主要是HTTP客户端发送GET方法读文件请求,HTTP服务器接收到请求之后将文件内容作为响应返回到客户端进行显示。可分为以下两个部分:

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

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

2.1 流图绘制

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

359e535a-9a17-11ee-9788-92fbcf53809c.png

2.2 节点配置

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

35a4a5ac-9a17-11ee-9788-92fbcf53809c.png

双击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节点,配置需要读取的文件名。点击完成即可保存配置。

35a870ce-9a17-11ee-9788-92fbcf53809c.png

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

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

2.3 流图下载

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

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

35acb53a-9a17-11ee-9788-92fbcf53809c.png

3. 读取ADC通道值的接口

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

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

3.1 流图绘制

添加http_in,fscript,http_out和adc节点到画布中并连线如下图。35b0cdc8-9a17-11ee-9788-92fbcf53809c.png

3.2 节点配置

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

35b75dd2-9a17-11ee-9788-92fbcf53809c.png

双击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节点,配置需要采集的通道号。点击完成即可保存配置。

35c3c61c-9a17-11ee-9788-92fbcf53809c.png

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

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

3.3 流图下载

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

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

35cb8dfc-9a17-11ee-9788-92fbcf53809c.png

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

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

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

4.1 流图绘制

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

35d0472a-9a17-11ee-9788-92fbcf53809c.png

4.2 节点配置

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

35d41c38-9a17-11ee-9788-92fbcf53809c.png

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

msg.payload = global.temp_value

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

35d7fad8-9a17-11ee-9788-92fbcf53809c.png

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

35df1020-9a17-11ee-9788-92fbcf53809c.png

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

35e675b8-9a17-11ee-9788-92fbcf53809c.png

双击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服务器搭建的获取温湿度传感器值的接口已基本实现。

35edf798-9a17-11ee-9788-92fbcf53809c.png

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节点到画布中并连线如下图。

35f20cd4-9a17-11ee-9788-92fbcf53809c.png

5.2 节点配置

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

35f6a69a-9a17-11ee-9788-92fbcf53809c.png

点击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节点,配置需要从哪个寄存器开始写值。点击完成即可保存配置。

35fa7248-9a17-11ee-9788-92fbcf53809c.png双击modbus_master_out节点,配置从机ID和写入的寄存器类型。点击完成即可保存配置。

36090a92-9a17-11ee-9788-92fbcf53809c.png

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

5.3 流图下载

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

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

3619d2c8-9a17-11ee-9788-92fbcf53809c.png


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

    关注

    2869

    文章

    41622

    浏览量

    358372
  • 服务器
    +关注

    关注

    12

    文章

    8116

    浏览量

    82509
  • HTTP
    +关注

    关注

    0

    文章

    466

    浏览量

    30314
收藏 人收藏

    评论

    相关推荐

     海外云服务器搭建pi节点详细步骤

     海外云服务器搭建pi节点简单吗?海外云服务器搭建pi节点步骤有哪些?小编为您整理发布海外云服务器搭建
    的头像 发表于 02-21 10:16 246次阅读

    幻兽帕鲁联机服务器搭建教程:无需公网IP、无需购买云服务器,比私建FRP更稳定

    ,可以在国内网络环境搭建自己的服务器搭建《幻兽帕鲁》服务器的过程其实非常简单,但如何实现服务器的远程访问,是比较难以解决的问题。除了直接
    的头像 发表于 01-29 16:58 373次阅读
    幻兽帕鲁联机<b class='flag-5'>服务器</b><b class='flag-5'>搭建</b>教程:无需公网IP、无需购买云<b class='flag-5'>服务器</b>,比私建FRP更稳定

    一起畅玩!幻兽帕鲁服务器华为云搭建教程(Windows 平台)

    【摘要】 幻兽帕鲁 Palworld 私服搭建教程,帮你快速搭建幻兽帕鲁服务器。 《幻兽帕鲁》是近期爆火的一款开放世界生存建造游戏,在游戏中,玩家可以在广阔的世界中收集神奇的生物“帕鲁”,派他们进行
    的头像 发表于 01-24 17:42 1461次阅读
    一起畅玩!幻兽帕鲁<b class='flag-5'>服务器</b>华为云<b class='flag-5'>搭建</b>教程(Windows 平台)

    如何自己搭建一个服务器

    如何自己搭建一个服务器?自己搭建一个服务器涉及到硬件和软件两个方面。下面是一个简单的指南,涵盖了基本的步骤。请注意,这是一个概述,实际步骤可能因你的需求和硬件选择而有所不同。
    的头像 发表于 12-12 16:52 2549次阅读

    搭建ftp服务器的步骤

    搭建ftp服务器的步骤  搭建FTP服务器是一项需要一定技术知识的任务,但是只要按照以下步骤进行操作,您就能成功搭建自己的FTP
    的头像 发表于 12-07 16:32 745次阅读

    HFS如何快速搭建http服务器

    HFS 是一个轻量级的HTTP 服务工具,3.0版本前进提供Windows平台安装包,3.0版本开提供Linux和macOS平台的安装包。HFS更适合在局域网环境中搭建文件共享服务或者
    的头像 发表于 11-14 10:32 398次阅读
    HFS如何快速<b class='flag-5'>搭建</b><b class='flag-5'>http</b><b class='flag-5'>服务器</b>

    存储服务器怎么搭建

      搭建存储服务器需要根据我们的需求和环境选择合适的硬件和软件,并进行相应的配置。那么存储服务器怎么搭建?
    的头像 发表于 10-31 16:51 1843次阅读

    轻量服务器怎么搭建ssh?

    搭建轻量服务器时,我们通常需要设置SSH登录,以便能够通过SSH客户端远程连接到服务器。下面是一些简单的步骤来帮助您搭建SSH。 第一步:登录轻量应用
    的头像 发表于 10-10 09:59 347次阅读

    HTTP服务器使用uIP TCP/ IP堆栈的示例

    EC_ M480_ uIP_ HTTP_Led_V1. 00 显示 HTTP 服务器, 网页非常简单 。 HTTP 客户端, 例如 IE 或 Chrome , 可以通过超链接连接到
    发表于 08-22 07:07

    如何利用服务器设置外网IP?

    都拥有自己的外网IP,作为连接全球互联网的桥梁。 当我们购买国外云服务器时,遇到的第一个问题就是如何搭建IP。 在本文中,小编将指导大家如何利用服务器设置外网IP? 如果我们想在同一
    的头像 发表于 08-07 17:33 936次阅读

    Linux开发_CentOS7.4服务器搭建NFS、NGINX服务器,安装ffmpeg、Qt环境

    在CentOS7.4服务器版本的环境下搭建NFS服务器、安装ffmpeg、安装nginx服务器、部署Qt编译环境。
    的头像 发表于 07-14 13:45 940次阅读
    Linux开发_CentOS7.4<b class='flag-5'>服务器</b><b class='flag-5'>搭建</b>NFS、NGINX<b class='flag-5'>服务器</b>,安装ffmpeg、Qt环境

    Chirpstack服务器简介和搭建教程

    LoRaWAN网络主要优势体现在低成本、广域连接和低功耗,同时具有较多的开源平台可供使用。使用Chirpstack服务器可以快速搭建本地LoRaWAN网络。本文重点介绍一下Chirpstack服务器是做什么的和Chirpstac
    的头像 发表于 05-30 13:43 768次阅读
    Chirpstack<b class='flag-5'>服务器</b>简介和<b class='flag-5'>搭建</b>教程

    在远程服务器搭建一个OpenVPN服务

    应公司要求需要在一台远程服务器搭建一个OpenVPN服务端,在公司本地服务器搭建一个OpenVPN客户端,实现公司内网可以访问远程
    的头像 发表于 05-26 15:03 4601次阅读
    在远程<b class='flag-5'>服务器</b>上<b class='flag-5'>搭建</b>一个OpenVPN<b class='flag-5'>服务</b>端

    如何将.txt 大文件发送到HTTP服务器

    我在 SPIFFS 闪存中创建了多个 .txt 文件系统。但是如何将 .txt 大文件发送到 HTTP 服务器,可以通过 ESP8266 12F 将 SPIFFS 1MB 文件发送到上传 HTTP
    发表于 05-19 09:00

    如何在http服务器中查看mpu 6050的值?

    我想使用 esp 01 和 mpu6050。如何在 http 服务器中查看 mpu 6050 的值。我正在使用 eclipse。你能帮我吗
    发表于 05-19 07:29