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

news2024/11/15 15:42:00

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.coloradmin.cn/o/1421603.html

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

相关文章

Oracle 锁的概念以及分类

1.什么是锁 数据库是一个庞大的多用户数据管理系统, 同一时刻可能有多个用户同时操作。事务的分离性要求当前事务不能影响其他的事务,所以多个会话操作同一个资源时,数据库会利用锁确保他们像队列一样一次执行。利用来锁消除多个用户操作同一…

Jmeter分布式场景

Jmeter分布式 1. 为什么使用Jmter分布式测试 1.1 需求 对学院接口(查询学院-所有)进行1000用户并发访问,测试服务器处理批量请求能力1.2 现状 我们单台电脑由于配置(CPU、内存)问题,最模拟500用户时,就出现卡死现象按照一般的压力机配置&…

opencv学习 特征提取

内容来源于《opencv4应用开发入门、进阶与工程化实践》 图像金字塔 略 拉普拉斯金字塔 对输入图像进行reduce操作会生成不同分辨率的图像,对这些图像进行expand操作,然后使用reduce减去expand之后的结果,就会得到拉普拉斯金字塔图像。 …

6.2 静态内存分配模式

Bruce Powel Douglass大师介绍-CSDN博客https://blog.csdn.net/ChatCoding/article/details/134665868 嵌入式软件开发从小工到专家-CSDN博客https://blog.csdn.net/ChatCoding/article/details/135297955 C嵌入式编程设计模式源码-CSDN博客https://blog.csdn.net/ChatCoding…

STM32单片机基本原理与应用(四)

直流电机驱动控制原理 1、电机正反转控制 在STM32中,直流电机的正反转控制主要通过改变电机输入电源的极性来实现。当电机的电压极性发生变化时,电机的旋转方向也会相应改变。在硬件电路中,可以通过继电器或晶体管等电子开关来切换电机的电源…

消息中间件RabbitMQ介绍

一、基础知识 1. 什么是RabbitMQ RabbitMQ是2007年发布,是一个在AMQP(高级消息队列协议)基础上完成的,简称MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法,由Erlang(专门针对于大…

【Tomcat与网络4】Tomcat的连接器设计

目录 1 如何设计一个灵活可靠的连接器 2 主要组件介绍 在上一篇,我们介绍了Tomcat提供服务的整体结构,本文我们一起来看一下Tomcat的连接器的设计。 在前面我们提到Tomcat主要完成两个功能: 处理 Socket 连接,负责网络字节流与…

中国的茶文化:现代生活中的茶文化

中国的茶文化:现代生活中的茶文化 引言 在现代社会的快节奏生活中,茶文化并未随时间流逝而褪色,反而以其独特的方式融入了全球各地人们的日常生活。它超越了饮品本身的范畴,成为一种连接历史、人文与现代生活方式的艺术形式。本文…

VRRP负载平衡

1.构图 2.实验 2.1如图提示配置pc1-pc4 掩码:255.255.255.0网关均设置为192.168.1(\2).254 2.2配置sw1-sw2 [sw1]port-group 1 //创建接口组,组号是1[sw1-port-group 1]group-member gigabitethernet 0/0/1 to gigabitethernet 0/0/3 //添加组成员,从…

Unity 设置鼠标

前言 本章主要对鼠标图标样式还有鼠标显隐进行设置 图标样式的设置 代码控制 有时候需要有改变鼠标样式的需求可以使用如下代码 Cursor.SetCursor(this.mouseTexture, Vector2.zero, CursorMode.Auto); 传入的要替换的图标偏移量允许您在支持的平台上使用硬件光标&#xff0…

【Javaweb】【C00157】基于SSM的宠物护理预定系统(论文+PPT)

基于SSM的宠物护理预定系统(论文PPT) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于ssm的宠物护理预订系统 本系统分为前台系统模块、后台管理员模块以及后台会员用户模块 其中前台系统模块:当游客打开系统的网址后&…

《Lua程序设计》-- 学习9

迭代器和泛型for 迭代器和闭包 迭代器(iterator)是一种可以让我们遍历一个集合中所有元素的代码结构。在Lua语言中,通常使用函数表示迭代器:每一次调用函数时,函数会返回集合中的“下一个”元素。 一个闭包就是一个…

万户 ezOFFICE SendFileCheckTemplateEdit.jsp SQL注入漏洞

0x01 产品简介 万户OA ezoffice是万户网络协同办公产品多年来一直将主要精力致力于中高端市场的一款OA协同办公软件产品,统一的基础管理平台,实现用户数据统一管理、权限统一分配、身份统一认证。统一规划门户网站群和协同办公平台,将外网信息维护、客户服务、互动交流和日…

C++/MFC:在窗体Form(Dialog)中多个编辑框时,在输入时将回车解释为TAB键,将输入焦点移到下一个编辑框的方法

很多时候,为了输入方便,常用的做法,就是将回车键解释为将输入焦点移动到下一个编辑框中。就像是我的VxTerm中的快速连接输入一样: VxTerm是一个国产化替代的SSH工具,可以从本站的资源中免费下载并且免费使用&#xff…

移动端基础:rem适配布局

rem单位 rem是相对单位,类似于em 但rem的基准是相对于HTML元素的字体大小 rem的优点是可以通过修改HTML文字大小改变页面元素大小,做到整体控制 媒体查询 使用media查询,可以针对不同的媒体类型定义不同的样式 可以针对不同的屏幕尺寸设…

大模型重塑车载语音交互:赛道巨头如何引领新周期?

车载语音交互赛道正进入新一轮竞争周期。 高工智能汽车注意到,传统车载语音交互赛道当前基本已进入成熟期,主要为任务型助手,包括从单轮对话到多轮对话,单音区到多音区,从单一的导航、多媒体娱乐等座舱功能扩展智能驾…

[嵌入式系统-6]:龙芯1B 开发学习套件 -3-软件层次架构

目录 一、龙芯软件架构 1.1 通用软件架构 1.2 龙芯软件架构 1.3 龙芯各种应用程序 1.4 龙芯SOC芯片硬件:龙芯1B 1.5 PMON软件 1.6 龙芯IDE管辖的软件 (1)CPU Core驱动程序 (2)SOC芯片外设驱动程序 &#xff…

人工智能(pytorch)搭建模型23-pytorch搭建生成对抗网络(GAN):手写数字生成的项目应用

大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型23-pytorch搭建生成对抗网络(GAN):手写数字生成的项目应用。生成对抗网络(GAN)是一种强大的生成模型,在手写数字生成方面具有广泛的应用前景。通过生成…

Adobe Camera Raw forMac/win:掌控原始之美的秘密武器

Adobe Camera Raw,这款由Adobe开发的插件,已经成为摄影师和设计师们的必备工具。对于那些追求完美、渴望探索更多创意可能性的专业人士来说,它不仅仅是一个插件,更是一个能够释放无尽创造力的平台。 在数字摄影时代,R…

数据结构——栈和队列(C语言)

栈种常见的数据结构,它用来解决一些数据类型的问题,那么好,我来带着大家来学习一下栈 文章目录 栈对栈的认识栈的模拟实现栈的练习方法一方法二 栈 对栈的认识 栈(stack)是限定只能在表的一端进行插入删除操作的线性…