前期准备
【EsDA 应用】快速实现串口转HTTP请求
【EsDA应用】Modbus应用详解
【EsDA应用】5分钟实现一个串口通信业务
【EsDA 应用】常用IO设备节点详解
1. 硬件准备
1.1 提供温湿度传感器值的接口项目
1.2 设置Modbus从站寄存器值的接口项目
2. 网络搭建
打开串口调试助手,检索并打开TTL转USB串口模块的设备端口号后,使用shell命令ip addr,查看网口的IP地址,根据下图可知,本文使用的网口设备IP地址是192.168.137.251。
本接口业务主要是将写入的文件内容通过HTTP客户端发送POST请求上传到HTTP服务器,服务器收到请求后做出相应处理。可分为以下四个部分:
用户在HTTP客户端的body中编辑需要写入的文件内容;
HTTP客户端设置服务器对应的url接口和请求方式,向开发板搭建的HTTP服务器发送HTTP请求;
HTTP服务器监听指定端口,处理对应接口的请求并响应;
查看写入到文件的内容,检验是否成功通过开发板搭建的HTTP服务器提供的接口,实现远程文件内容的输入。
添加http_in,fscript,http_out,timer,fscript和fileout节点到画布中并连线如下图。
双击http_in节点,该节点主要是给HTTP客户端提供一个POST方法的写文件内容的接口,统一资源定位符可以根据用户需要更改。点击完成按钮即可保存配置。
双击http_in节点的消费者节点fscript,该节点主要是接收HTTP客户端上传消息体的内容,并将接收写文件接口请求的标志位置一。点击完成按钮即可保存配置。
global.put_file_status = 1
global.putfile = str(msg.payload,true)
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
}
绘制完流图后,点击CTRL+S 即可保存流图,点击下载流图。
在HTTP客户端postman上发起写文件请求,HTTP服务器收到请求后将写入的内容作为响应返回到客户端进行显示,并执行写文件的操作,在串口调试助手上输入cat flow/test.txt
即可看到写入文件的内容。结果如下图所示则表示HTTP服务器搭建写文件的接口已基本实现。
HTTP客户端设置读文件的url接口和请求方式,向开发板搭建的HTTP服务器发送HTTP请求;
HTTP服务器监听指定端口,接收到读文件的请求后将读文件标志位置一,等待读取文件内容,并将读到的内容作为响应发送到HTTP客户端。
添加http_in,fscript,http_out,timer和filein节点到画布中并连线如下图。
双击http_in节点,该节点主要是给HTTP客户端提供一个GET方法的读文件内容的接口,统一资源定位符可以根据用户需要更改。点击完成按钮即可保存配置。
双击http_in的消费者节点fscript,该节点的主要功能是当HTTP服务器接收到了来自客户端的读文件接口的请求,那么将读文件标志位(get_file_status)置一,延时等待读取文件的业务,最后将读取到的数据作为响应发送到HTTP客户端。
global.get_file_status = 1
sleep_ms(500)
msg.payload = "you get file data is "+global.getfile
双击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的消费者节点fscript,该节点主要是将filein节点读取出来的文件内容,赋值给可供其他节点访问的全局参数。点击完成即可保存配置。
global.getfile = str(msg.payload, true)
绘制完流图后,点击CTRL+S 即可保存流图,点击下载流图。
在postman中发送HTTP客户端GET方法的读文件请求,后续可以在响应报文部分看到由HTTP服务器发出的读取文件内容的响应正文。结果如下图所示则表示HTTP服务器搭建读文件的接口已基本实现。
本接口业务主要是HTTP服务器提供ADC通道的电压值的接口,当HTTP客户端发起该请求时,HTTP服务器将采集到的ADC通道电压值作为响应返回到HTTP客户端进行显示。可分为以下两个部分:
3.1 流图绘制
双击http_in节点,该节点主要是给HTTP客户端提供一个GET方法的获取ADC通道电压值的接口,统一资源定位符可以根据用户需要更改。点击完成按钮即可保存配置。
双击http_in的消费者节点fscript,该节点主要目的是将采集到的ADC通道的电压值作为响应发送到HTTP客户端。点击完成即可保存配置。
var a = "adc status is "+ global.adc_value
wb = 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"
绘制完流图后,点击CTRL+S 即可保存流图,点击下载流图。
在postman中发送HTTP服务器提供的采集ADC通道值的接口请求,后续可以在响应部分看到HTTP服务器返回的实时采集到的ADC电压值。结果如下图所示则表示HTTP服务器搭建的获取ADC通道电压值的接口已基本实现。
本接口业务主要是HTTP服务器提供温湿度传感器采集的温度和湿度值的接口,当HTTP客户端发起该请求时,HTTP服务器将采集的温湿度值作为响应返回到HTTP客户端进行显示。可分为以下两个部分:
添加http_in,fscript,http_out,modbus_master_in和modbus_parse_in节点到画布中并连线如下图。
双击http_in节点,该节点主要是给HTTP客户端提供一个POST方法的接收温湿度传感器数据的接口,统一资源定位符可以根据用户需要更改。点击完成按钮即可保存配置。
双击http_in节点的消费者节点fscript,该节点主要处理是将采集到的温湿度传感器的值作为响应发送给HTTP客户端。点击完成按钮即可保存配置。
msg.payload = global.temp_value
双击modbus_parse_in的消费者节点fscript,本节点主要是解析处理采集到的数据,并赋值给可供其他节点使用的全局变量。点击完成即可保存配置。
global.temp_value = "temp:"+array_get(msg.payload,0)/10+"C, "+"humi:"+array_get(msg.payload,1)/10+"RH"
绘制完流图后,点击CTRL+S 即可保存流图,点击下载流图。
在postman中发送HTTP服务器提供的采集温湿度传感器值的接口请求,后续可以在响应部分看到HTTP服务器返回的温度值和湿度值。结果如下图所示则表示HTTP服务器搭建的获取温湿度传感器值的接口已基本实现。
本接口业务主要是将需要写入的Modbus从站寄存器值通过HTTP客户端发送POST请求上传到HTTP服务器,服务器收到请求后做出相应处理。可分为以下四个部分:
用户在HTTP客户端的body中编辑需要写入的Modbus从站寄存器值内容;
HTTP客户端设置对应的url接口和请求方式,向开发板搭建的HTTP服务器发送HTTP请求;
HTTP服务器监听指定端口,处理对应接口的请求并响应;
查看写入到Modbus从站寄存器的内容,检验是否成功通过开发板搭建的HTTP服务器提供的接口,实现Modbus从站寄存器值的远程输入。
添加http_in,fscript,http_out,modbus_parse_out和modbus_master_out节点到画布中并连线如下图。
双击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节点,配置需要从哪个寄存器开始写值。点击完成即可保存配置。
绘制完流图后,点击CTRL+S 即可保存流图,点击下载流图。
在postman中发送HTTP服务器提供的设置Modbus从站寄存器值的接口请求,后续可以在Modbus Slave上位机中查看写入的寄存器的值。结果如下图所示则表示HTTP服务器搭建的设置Modbus从站寄存器值的接口已基本实现。
更多往期文章,请点击“ 阅读原文 ”。