利用国产库libhv动手写一个web_server界面(二)

目录

一、配置参数解析与响应

1.读取参数

2.设置参数

3.恢复默认参数

二、整体的界面实现以及交互效果

三、关于yaml文件乱码问题解决

四、参考文章


一、配置参数解析与响应

使用cJSON解析库,解析接收到的JSON数据字段,区别接收到的配置参数是请求设置配置参数信息或成功获取相关配置参数的信息。例如:发送JSON格式字符串:{"request_purpose":"set","param_name":"can_param","param_data":{"can_id":"0x102","baud_rate":"500k"}}。request_purpose:字段表示请求目的,set:字段表示请求设置配置参数;param_name: 字段表示设置的配置参数类型名称,can_param:表示设置的配置参数类型名称为CAN配置参数;param_data:{can_id:0x102,baud_rate:500k}字段表示设置的数据内容。则接收到如下JSON格式字符串:{"Message":"SUCCEED"}字段表示为设置配置CAN配置参数成功。具体的web server交互接口使用如下。

1.读取参数

   接口形式

localhost:5555

参数

cJSON *config_json[4] = {NULL, NULL, NULL, NULL};

说明

该接口用于访问HTTP的登录界面信息,只有正确输入登录用户名和密码才能正确进入界面,登录名为:admin,密码为:5166。

下发

           // 发送获取数据的命令

send_cjson_data("get", "internet_param", ask_config_json, 0);

send_cjson_data("get", "service_modules_param", ask_config_json, 1);

 send_cjson_data("get", "bus485_param", ask_config_json, 2);

 send_cjson_data("get", "can_param", ask_config_json, 3);

 send_4json(ask_config_json);

回复

对应参数的JSON格式字符串,通过接口函数解析并进行界面展示

2.设置参数

接口形式

localhost:7000

参数

cJSON *ask_config_json[4] = {NULL, NULL, NULL, NULL};

说明

该接口用于设置功能,发送用户在界面配置的相关信息,以便修改存储在paramter_config.yaml数据文件里网络的配置参数,后台程序会先检查设置的ip参数是否符合要求,确认设置的信息符合要求后在对数据进行封装通过ZMQ_REQ发送出去。

下发

// 检查ip是否符合设置的要求

check_config_ip(conn, &config);

//将用户修改的信息全部封装返回给后端

cjson_net_config_data(&config);

cjson_ser_config_data(&config);

cjson_485_config_data(&config);

cjson_can_config_data(&config);

send_42json(config_json, 4);

回复

JSON格式的字符串Message:(NOEN(信息不完整)、SUCCEED(成功)、FAILURE(失败))

3.恢复默认参数

接口形式

localhost:7000

参数

cJSON *default_config_json[1] = {NULL};

说明

该接口用于恢复存储在paramter_config.yaml数据文件里服务器模块的配置参数,并进行相应的界面展示。

下发

send_cjson_data("set", "default_param", default_config_json, 0);

回复

JSON格式的字符串Message:(NOEN(信息不完整)、SUCCEED(成功)、FAILURE(失败))

// http请求/响应不同阶段,起始状态,解析/生成http请求/响应的第一行,解析/生成http请求行的阶段,状态行阶段,请求/响应头部的阶段,请求/响应头部结束状态,主体的阶段,请求/处理响应完成

二、整体的界面实现以及交互效果

三、关于yaml文件乱码问题解决

解决办法:因为html变了,在设置恢复默认参数时,设置的错误信息导致yaml文件乱码,因此在访问会出错。

四、参考文章

Html使用style的四种方法goahead(嵌入式Web服务器)之asp、goform篇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/548109.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET基于CS应用程序平台多语种技术应用研究

摘 要 C/S应用程序平台多语种技术是一种基于C/S应用技术结构平台的关于多语种的转换和翻译技术。本设计基于Visual Studio.Net集成开发环境,采用SQL Server2000进行数据库后台开发。通过采用数据字典实现应用系统的静态文本转换;通过使用Visual Studio.…

GPT 浅析

GPT 浅析 文章目录 GPT 浅析GPT 1无监督预训练有监督微调任务相关的输入变换 GPT2GPT3 GPT 1 在模型架构上,GPT-1基于Transformer构造,这是因为与其他卷积神经网 络或者循环神经网络相比,Transformer提供了效率更高的方法来处理文本 中的长期…

C#使用PaddleOCR进行图片文字识别✨

PaddlePaddle介绍✨ PaddlePaddle(飞桨)是百度开发的深度学习平台,旨在为开发者提供全面、灵活的工具集,用于构建、训练和部署各种深度学习模型。它具有开放源代码、高度灵活性、可扩展性和分布式训练等特点。PaddlePaddle支持端…

大世界基尼斯见证辉煌,云仓酒庄首届酒类培训新高度诞生

近日,一场规模盛大的酒类培训盛会,在云仓酒庄的精心组织下圆满落幕。此次培训活动以其卓着的成果和盛大的规模,创下了大世界基尼斯纪录,为酒类培训领域树立了新的标杆。这一成就的取得,背后是云仓酒庄团队无数的心血与…

【JAVA进阶篇教学】第一篇:JDK8介绍

博主打算从0-1讲解下java进阶篇教学,今天教学第一篇:JDK8介绍。 Java 8 引入了许多令人兴奋的新特性,其中包括 Lambda 表达式、Stream API、函数式接口、方法引用、默认方法等。下面我将为您详细介绍这些新特性,并提供相应的代码…

代码随想录刷题随记22-回溯2

代码随想录刷题随记22-回溯2 216.组合总和III leetcode链接 注意与之前的题目不同的是需要求和。从左到右的范围尝试模型。 class Solution { public:void backtrace(vector<vector<int>> &ret,int k,int n,int index,vector<int>& path,int &…

【XR806开发板试用】软件模拟IIC驱动OLED显示图片自己遇到的坑

前言 首先&#xff0c;非常感谢极术社区和全志举办此次开发板申请试用活动。由于自己水平太低&#xff0c;拿到板子后不知道要干点啥&#xff0c;偶然看见一个大佬写的I2C外设使用及控制OLED屏显示&#xff0c;文章中使用了硬件IIC控制OLED&#xff0c;正好我手里也有一块OLED…

【ElasticSearch】安装

1.官网寻找合适版本下载 这里我选择的是8.11.1 2.解压并启动 然后在浏览器输入http://localhost:9200/&#xff0c;判断是否启动成功 如下所示&#xff0c;则表示启动成功 安装过程中遇到过几个bug&#xff0c;记录在这篇文章中 【ElasticSearch】安装&#xff08;bug篇&am…

MySQL——基础

SQL 全称 Structured Query Language&#xff0c;结构化查询语言。操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据库统一标准 。 SQL 通用语法 SQL语句可以单行或多行书写&#xff0c;以分号结尾。SQL语句可以使用空格/缩进来增强语句的可读性。MySQL数据库…

mysql使用逗号分隔的一行数据转多行数据

文章目录 学习链接准备建表插入数据 方法MySQL逗号拼接的列拆分为多行&#xff08;不使用mysql.help_topic&#xff09;遇到字段以逗号分隔符分号分隔符存放多个值&#xff0c;需要一行转化多行&#xff0c;以用来关联&#xff08;使用mysql.help_topic&#xff09;改为LEFT JO…

git 上传代码到 github

准备工作 git Git LFS&#xff08;大文件>100Mb&#xff09; git 参考手册 github 建立仓库&#xff1a;New repository git 指令 git add . 用于将当前目录下的所有文件添加到 Git 仓库的暂存区中。 git add . 命令会将当前目录下的所有文件添加到 Git 仓库的暂存区中…

五、流程控制之循环

目录 5.1 步进循环语句for 5.1.1 带列表的for循环语句 5.1.2 不带列表的for循环语句 5.1.3 类C风格的for循环语句 5.2 while循环语句 5.2.1 while循环读取文件 5.2.2 while循环语句示例 5.3 until循环语句 5.4 select循环语句 5.5 嵌套循环 5.1 步进循环语句for for…

如何使用ArcGIS Pro进行路径分析

路径分析是一种空间分析技术&#xff0c;用于确定两个或多个地点之间最佳路径或最短路径&#xff0c;这里为大家介绍一下在ArcGIS Pro中如何进行路径分析&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的道路数据&#xff0c;除了道路数据&a…

大厂面试:获取字符串的全排列

一、概念 现有一个字符串&#xff0c;要打印出该字符串中字符的全排列。例如输入字符串abc&#xff0c;则打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。 可以基于回溯法来解决这个问题。 二、代码 public class Permutation {//输出字符串str的全…

【自媒体创作利器】AI白日梦+ChatGPT 三分钟生成爆款短视频

AI白日梦https://brmgo.com/signup?codey5no6idev 引言 随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;AI在各个领域都展现出了强大的应用潜力。其中&#xff0c;自然语言处理技术的进步使得智能对话系统得以实现&#xff0c;而ChatGPT作为其中的代表之一…

【Linux】磁盘阵列RAID技术

目录 一、RAID介绍 1.1 什么是RAID技术&#xff1f; 1.2 为什么要使用RAID技术&#xff1f; 二、RAID级别 2.1 常见的RAID级别 2.2 常见RAID介绍 三、RAID特性对比 一、RAID介绍 1.1 什么是RAID技术&#xff1f; 把多块独立的物理磁盘按不同的方式组合起来形成一个硬盘…

人工智能讲师大模型培训老师叶梓:基于大型语言模型的自主智能体:架构设计与应用前景

在人工智能的快速发展中&#xff0c;大型语言模型&#xff08;LLM&#xff09;已成为推动技术进步的关键力量。LLM的出现不仅改变了我们与机器的交互方式&#xff0c;也为构建具有高级认知能力的自主智能体&#xff08;AI Agent&#xff09;提供了新的可能性。本文旨在探讨基于…

(非技术) 基因遗传相关知识学习笔记

目录 一、基因遗传名词解释 二、什么叫显性遗传和隐性遗传&#xff1f; 三、如何确定遗传性质呢&#xff1f;是显性还是隐性&#xff1f; 四、常规例子1&#xff1a; 五、常规例子2&#xff1a; 六、实际案例&#xff1a; 七、思考题&#xff1a; 八、参考&#xff1a; …

云计算: OVN 集群 部署分布式交换机

目录 一、实验 1.环境 2.OVN 集群 部署云主机 3.中心端添加DVS分布式大二层交换机 二、问题 1.南向控制器查看主机名只显示localhost 2.中心端如何添加DVR分布式⼤三层路由器 一、实验 1.环境 (1) 主机 表1 宿主机 主机架构软件主要服务IP备注ovn_central中心端 ovn…

【Linux】基础I/O>文件系统软硬链接动静态库详解

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;Linux_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.C语言文件接口 1.1 hello.c写文件 1.2 hello.c读文件 1.3 输出信息到显示器 1.4 stdin & stdout & stderr 1.5 总结打…