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,一经查实,立即删除!

相关文章

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

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

SpringBoot 结合 liteflow 规则引擎使用

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

LabVIEW扫频阻抗测试系统

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

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

论文题目:ASF-YOLO: A novel YOLO model with attentional scale sequence fusion for cell instance segmentation 论文链接: https://arxiv.org/abs/2312.06458 代码链接:https://github.com/mkang315/ASF-YOLO 摘要(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 什么是继承 面向对象程序设计中最重要的一个概念是继…

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

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

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

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

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

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

STM32——USART

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

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

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

部署YUM仓库服务

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

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

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

云服务器如何快速部署访问静态页面(个人网站博客等)

1,购买云服务器 2,配置安全项 云服务器ecs下,配置ip、端口所有人都可访问 3,关闭防火墙,将前端静态项目传输到云服务器上 可以使用SecureCRT,本地远程连接到服务器(需要用户名与密码&#x…

LVS常用的NAT模式和DR模式实战示例

引言:紧接上文,了解LVS,这一篇就够了-CSDN博客,今天我们对LVS常用的两种模式来进行示例配置演示 LVS-NAT模式 1、环境准备 准备 3 台纯净的虚拟机 关闭防火墙和selinux 例: lvs-server 添加两个网卡 NAT模式 …

基于连续相位负载调制的单输入宽带混合Doherty功率放大器设计(2023.05 MTT)-从理论到ADS版图

基于连续相位负载调制的单输入宽带混合Doherty功率放大器设计-从理论到ADS版图 最近开始搞大论文了,Doherty方面对最新的一些的技术看的比较少,找几个牛逼的学习一下下,虽然最后可能也用不上。已经完成了理论的推导和ADS版图仿真&#xff0c…

4、this指向、动画案例、封装、offset、client、scroll

一、this指向问题 1、在构造函数中this指向实例化对象 2、在自定义对象的函数(方法)中指向this指向当前的对象 3、在普通函数中this指向window 4、函数中this指向:在事件函数中this指向事件源 5、在定时器函数中this指向window 二、动…

动态分析C语言代码生成函数调用关系的利器——gprof

大纲 准备工作下载libevent代码安装编译依赖编译libevent 收集运行数据编译插入检测代码的可执行程序收集数据 数据转换环境准备转换为dot 转换为图片环境准备转换图片 参考代码参考资料 gprof是一个C语言程序性能分析工具。在编译期间,我们给编译指令增加-pg选项&a…

第 8 章:Linux中使用时钟、计时器和信号

在本章中,我们将开始探索Linux环境中可用的各种计时器。随后,我们将深入了解时钟的重要性,并探讨UNIX时间的概念。接下来,我们将揭示在Linux中使用POSIX准确测量时间间隔的方法。之后,我们将进入std::chrono的领域&…

创业7年复盘,中美企业服务市场差异浅析

2024 年伊始,Kyligence 联合创始人兼 CEO 韩卿在公司内部的飞书订阅号发表了多篇 Rethink Data & Analytics 的内部信,分享了对数据与分析行业的一些战略思考,尤其是 AI 带来的各种变化和革命,是如何深刻地影响这个行业乃至整…

一篇文带你使用js实现拖拽排序

先介绍一下html5的drag属性,拖放(Drag 和 drop)是 HTML5 标准的组成部分。想要启用drag,只要给元素加上draggable"true"就行了(Safari 5.1.2除外)。   实际效果: 拖动事件(了解事件详情)   事…