linux平台 LED情报板网关项目总结

LED情报板目前已经基本稳定

主要存在两个版本LED1.5 和LED2

两个版本的主要差别是 :

1.1.5的配置文件存在本地 2.0的存在平台 需要通过接口从平台获取

2.1.5的下发消息的时候需要同步返回 2.0的是异步返回,所以1.5的要尽可能完成 不然会导致发  布平台卡在那里

3.1.5上报状态是一个一个上报的,2.0上报是所有板子一起上报 

4.1.5有注册接口 注册的时候需要把每个情报板支持的字体大小 上报给平台 2.0都是在平台配置的

5.1.5采用xml数据格式  2.0采用json格式

基于以上的区别 1.5和2.0架构完全不同  2.0是先开发的  1.5 是 后开发的 

1.5采用类似nginx的主从进程模式,主进程负责监控子进程 程序初始化工作等等

并发采用协程st-thread进行 子进程启动会开启协程池比如20个协程,用来等待客户端的连接

所有下发都是协程接口进行 这样保证了并发性,同时引入了redis缓存 用于保存每个情报板的发布状态 发布记录等等 每个情报板保存多达500条记录,具体的是在配置文件中配置的 由于redis的数据是保存在内存中 所以 不能设置的太大 

2.0查询状态采用EPOLL  发布的话则采取线程池同步io的方式处理

实现GetRunInfo实时查看情报板的状态

  

提供GetPublisInfo接口用于查看每个情报板的发布记录 如下图

LED2.0支持图片发布 支持加密功能

LED1.5版本部署步骤 

主程序led1.5 

配置文件config.json 

日志配置文件zlog.conf

情报板信息文件ledlist.json

辅助脚本RunCmd.sh killcmd.sh status.sh GetPublish

redis-server  redis-cli   redis.conf

需要先启动redis   ./redis-server redis.conf

config.json文件主要配置如下 包括平台ip端口 redis端口 redis记录大小等等 

LED2.0版本需要

主程序led2

主程序配置文件config.json

日志配置文件zlog.conf

如果是ubuntu22.04一下版本还需要新版本的libstdc++.so.6库

如果启用加密还需要store_keys.txt文件

辅助脚本RunCmd.sh killcmd.sh status.sh GetPublish

redis-server  redis-cli   redis.conf

需要先启动redis   ./redis-server redis.conf

config.json文件和1.5版本的差不多

涉及到的技术栈

HTTP 协程 线程池 EPOLL REDIS 

日志采用第三方的zlog

HTTP1.5的是自己解析的 2.0采用的cpp-httplib

xml解析tiny2xml  json解析jsonxx

协程库采用st-thread

别的好像没啥了

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【python】求解线性方程

唯一解(矩阵法、solve函数) { 3 x y 9 x 2 y 8 \left\{ \begin{matrix} 3xy9 \\ x2y8 \end{matrix} \right. {3xy9x2y8​ A x b Axb Axb,其中 A [ 3 1 1 2 ] A\left[\begin{matrix} 3 & 1 \\ 1 &2 \end{matrix}\right] A[31​12​], B [ 9 8 ] B\left[\begin{m…

境外投资企业备案结果公开名录列表数据

境外投资企业备案结果公开名录列表数据 1、时间:更新至2023年10月16日 2、指标:境外投资企业_机构、境内投资者名称、投资国别地区 3、来源:商务部 4、指标解释 境外投资企业(机构)备案结果公开名录列表&#xff…

Java使用io流生成pdf文件

首先生成pdf和正常请求接口一样,直接写~ Controller层: 第一个注解:最顶层增加 Controller 注解(控制器)不多讲了 直接加上。 第二个注解:最顶层增加 CrossOrigin 注解此注解是为了浏览器请求的时候防…

SpringBoot 结合 liteflow 规则引擎使用

1、前言 在日常的开发过程中,经常会遇到一些串行或者并行的业务流程问题,而业务之间不必存在相关性。 在这样的场景下,使用策略和模板模式的结合可以很好的解决这个问题,但是使用编码的方式会使得文件太多,在业务的部分环节可以…

课程页页面

课程组件 <template><div class"course"><Header></Header><div class"main"><!-- 筛选条件 --><div class"condition"><ul class"cate-list"><li class"title">课…

LabVIEW扫频阻抗测试系统

实现扫频阻抗法用于检测变压器绕组变形&#xff0c;结合了短路阻抗法和频响法的优点&#xff0c;但受限于硬件精度&#xff0c;尤其是50 Hz短路阻抗测试存在稳定性和准确性的问题。通过LabVIEW编程&#xff0c;控制宽频带信号发生器和高速采集卡&#xff0c;提高测试结果的稳定…

【论文阅读|细胞实例分割算法ASF-YOLO】

论文题目&#xff1a;ASF-YOLO: A novel YOLO model with attentional scale sequence fusion for cell instance segmentation 论文链接&#xff1a; https://arxiv.org/abs/2312.06458 代码链接&#xff1a;https://github.com/mkang315/ASF-YOLO 摘要&#xff08;Abstract&a…

C++(6) 继承

文章目录 继承1. 继承1.1 什么是继承1.2 C 继承方式1.2.1 基本案例1.2.2 继承权限组合1.2.3 继承中构造函数的说法1.2.4 继承中析构函数的执行顺序1.2.5 继承中变量名称冲突问题1.2.6 继承中函数【重写】 继承 1. 继承 1.1 什么是继承 面向对象程序设计中最重要的一个概念是继…

vscode在使用ssh链接工具看不到隐藏的文件,如何解决?

Visual Studio Code (VSCode) 的 SSH 远程开发插件默认情况下不会显示隐藏文件和文件夹。解决这个问题的方式是更改 VSCode 的设置&#xff0c;让其显示隐藏文件和文件夹。 以下是如何操作的步骤&#xff1a; 打开 VSCode。 点击左下角的设置按钮&#xff08;齿轮图标&#x…

学fpga和还是嵌入式?

具体要选哪个&#xff0c;更多还是看个人喜好还有基础知识结构。 我们先来明白下两者区别在哪&#xff1f; 1、嵌入式&#xff1a;分两部分&#xff0c;第一是嵌入式软件开发&#xff0c;主要与嵌入式操作系统、应用软件等有关。第二是嵌入式硬件开发&#xff0c;需要掌握硬件…

使用xlsx、xlsx-style导出表格添加背景色;合并单元格部分样式缺失问题解决

这篇说一下使用xlsx-style导出excel时样式的设置。需要安装xlsx、xlsx-style、file-saver插件&#xff08;file-saver可以不装&#xff0c;用a标签代替也可以&#xff09;&#xff0c;安装时可能会碰到一些报错问题&#xff0c;可以去看下我之前一篇博客&#xff1a;纯前端导出…

AI投资或成科技裁员罪魁祸首

最近的科技裁员让许多人对这个行业的稳定性产生了疑问。然而&#xff0c;仔细观察发现&#xff0c;这些裁员并不是经济困境的迹象&#xff0c;而是科技公司为了重新调整优先事项并投资未来而进行的战略举措。科技行业正投入数十亿美元用于人工智能&#xff08;AI&#xff09;&a…

Redis数据类型-五大基本数据类型

文章目录 Redis五大数据类型String(字符串)List(列表)Set(集合)Hash(哈希)Zset(有序集合) 总结 Redis五大数据类型 String(字符串) String基本命令&#xff1a; 127.0.0.1:6379> set key1 hello #设置值 OK 127.0.0.1:6379> get key1 # 获取值 "hello" …

深入玩转Playwright:高级操作解析与实践

playwright高级操作 iframe切换 ​ 很多时候&#xff0c;网页可能是网页嵌套网页&#xff0c;就是存在不止一个html标签&#xff0c;这时候我们的selenium或者playwright一般来说定位不到&#xff0c;为什么呢&#xff1f; ​ 因为默认是定位到第一个标准的html标签内部。 …

STM32——USART

一、通信 1.1通信是什么&#xff1b; 通信是将一个设备的数据发送到另一个设备中&#xff0c;从而实现硬件的扩展&#xff1b; 1.2通信的目的是什么&#xff1b; 实现硬件的扩展-在STM32中集成了很多功能&#xff0c;例如PWM输出&#xff0c;AD采集&#xff0c;定时器等&am…

小程序样例5:简单登录界面

基本功能 1、头像选择、用户名、密码、昵称选择、性别、城市 2、确认注册跳转 我的页面。 3、其他注册方式跳转用户名 密码登录方式 4、清除 和 密码显示按钮&#xff1a; 5、用户名、密码合法性校验&#xff1a; 6、点击微信图标&#xff0c;调转回微信登录&#xff1a; 代码…

star原则

"STAR" 原则通常用于回答面试或描述工作经验等场景中&#xff0c;以清晰、有条理地传达信息。"STAR" 是 Situation&#xff08;情境&#xff09;、Task&#xff08;任务&#xff09;、Action&#xff08;行动&#xff09;、Result&#xff08;结果&#xf…

P2241 统计方形(数据加强版)题解

题目 有一个nm方格的棋盘&#xff0c;求其方格包含多少正方形、长方形&#xff08;不包含正方形&#xff09;。 输入输出格式 输入格式 一行&#xff0c;两个正整数n,m&#xff08;n≤5000,m≤5000&#xff09;。 输出格式 一行&#xff0c;两个正整数&#xff0c;分别表…

部署YUM仓库服务

一、yum仓库 1. yum简介 yum是一个基于RPM包&#xff08;是Red-Hat Package Manager红帽软件包管理器的缩写&#xff09;构建的软件更新机制&#xff0c;能够自动解决软件包之间的依赖关系。 为什么会有依赖关系的发生 因为linux本身就是以系统简洁为自身优势&#xff0c;所以…

超超超详细讲解TCP三次握手与四次挥手(大图解),值得收藏

TCP 三次握手与四次挥手深入探究 TCP基础知识 TCP 头格式有哪些 TCP首部包括20字节的固定首部部分及长度可变的其他选项&#xff0c;所以TCP首部长度可变。20个字节又分为5部分&#xff0c;每部分4个字节32位&#xff0c;如图中的前5行&#xff0c;每行表示32位。 TCP 头格…