更多内容点击边缘智联专栏

一、功能概述

应用管理系统是整个通讯管理机应用的启动入口协调者。作为单例组件,它在程序启动时负责按顺序加载并运行两大核心子系统:

序号 子系统 功能角色
1 数源系统 通讯采集与数据源管理
2 数用系统 数据应用与业务处理

此外还提供 停止(Stop) 接口,用于实现受控关闭。


二、整体架构

main() 程序入口
    │
    ├── 解析命令行参数
    ├── 注册信号处理函数(退出、重载日志配置)
    ├── 初始化日志系统
    ├── 使能硬件看门狗(可选)
    │
    └── 调用 AppManagement::GetInstance()->Start()
                                    │
                    ┌───────────────┴───────────────┐
                    ▼                               ▼
            loadSubSystem()                runSubSystem()
             加载子系统                       运行子系统
                    │                               │
        ┌───────────┼───────────┐           ┌───────┴───────┐
        ▼                       ▼           ▼               ▼
   数源系统.LoadModule()   数用系统.LoadModule()   数源系统.RunModule()
   (加载配置、创建对象)   (加载配置、创建对象)   (启动采集线程)
                                                    
             主线程进入无限循环
         ┌─────────────────────────┐
         │  喂硬件看门狗 (可选)      │
         │  Run 状态指示灯闪烁       │
         │  睡眠 1 秒                │
         └─────────────────────────┘
            收到退出信号后
                    │
                    ▼
              AppManagement::GetInstance()->Stop()

三、生命周期

三个阶段,按顺序依次执行:

  1. 加载阶段 — 调用两个子系统的 LoadModule,完成配置解析与内存对象构建。若任一子系统加载失败,仅记录告警日志,不中断流程。
  2. 运行阶段 — 调用数源系统的 RunModule,启动采集线程开始数据通讯。数用系统(仅参与加载,运行由各自模块内部线程驱动)。
  3. 停止阶段 — 记录停止日志,预留受控关闭扩展点。

四、关键设计要点

设计点 说明
单例模式 全局唯一实例,通过 GetInstance() 获取,禁止拷贝和赋值
顺序依赖 必须先加载(LoadModule)再运行(RunModule);数源系统先加载
容错设计 子系统加载/运行失败不阻断整体启动,记录告警日志后继续
模块解耦 管理模块与子系统之间仅通过各自的 LoadModule / RunModule 接口交互,无直接耦合
Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐