# hiTrigger **Repository Path**: GKoSon/hiTrigger ## Basic Information - **Project Name**: hiTrigger - **Description**: 技术底座:当一件事情发生 您有多件事情需要处理的时候(解耦模型-链表) - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-22 - **Last Updated**: 2026-02-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # hiTrigger 事件触发框架 hiTrigger 是一个轻量级的事件触发框架,采用链表数据结构实现 ## 功能特性 - **多事件类型支持**:支持 `E_MAX` 种不同的事件类型 比如 `E_RS485_RX=0` 那么事件0就是串口收到一包数据 比如 `E_ETH_RX=1` 那么事件1就是网口收到一包数据 - **动态注册/注销**:支持运行时动态添加和移除事件处理函数 比如hiTrigger_list_register(E_RS485_RX,app1_fun,NULL); 就是注册app1_fun去观察E_RS485_RX事件 ![1771818665722](images/README/1771818665722.png) - **链表存储**:使用链表结构存储事件节点,灵活高效 底层slist.c slist.h复用https://gitee.com/GKoSon/hiTimerList - **统一分发中心**:提供统一的事件分发枢纽 比如 `E_RS485_RX=0` 那么事件E_RS485_RX爆发则hiTrigger_exe(E_RS485_RX)遍历链表 调用全部观察者注册的函数 ## 项目结构 ``` . ├── CMakeLists.txt # CMake 构建配置 ├── hiTrigger.c # 事件触发核心实现 ├── hiTrigger.h # 事件触发头文件 ├── main.c # 示例程序 ├── slist.c # 链表操作实现 └── slist.h # 链表头文件 ``` ![1771818798108](images/README/1771818798108.png) 核心数据结构如上 类似rtthread的容器 **横向看**:底部是数组 每个数组的成员是一个list 是一个钩子( **蓝色球** ) **纵向看**:每个数组成员挂接链表 每个链表都是一个事件(闪电)爆发会驱动的一系列观察者回调函数( **红色框** ) ## 核心 API ### 事件注册 ```c char hiTrigger_list_register(char index, void* fun, void* universal); ``` - `index`: 事件类型索引 - `fun`: 事件处理函数指针 - `universal`: 通用参数 ### 事件注销 ```c char hiTrigger_list_unregister(char index, void* fun); ``` - `index`: 事件类型索引 - `fun`: 要注销的处理函数指针 ### 事件执行 ```c void hiTrigger_exe(char index); ``` - `index`: 要触发的事件类型索引 ## 使用示例 ```c // 定义事件处理函数 void app1_fun(void) { printf("App1 triggered!\n"); } void app2_fun(void) { printf("App2 triggered!\n"); } int main(void) { // 注册事件 hiTrigger_list_register(0, app1_fun, NULL); hiTrigger_list_register(0, app2_fun, NULL); // 触发事件 hiTrigger_exe(0); // 注销事件 hiTrigger_list_unregister(0, app1_fun); return 0; } ``` ## 构建与运行【WIN10笔记本+vscode+cmake】 ### 方式一: gcc .\main.c .\hiTrigger.c .\slist.c 直接编译得到a.exe 即可执行a.exe ### 方式二: https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/quick-start/stm32f103-simulator/stm32f103-simulator 使用rtthread的STM32F103模拟器的KEIL工程 方便debug ### 方式三: 使用规范cmake 📥 CMake 官方下载地址 最新稳定版(Windows x64,推荐): https://github.com/Kitware/CMake/releases/download/v4.2.1/cmake-4.2.1-windows-x86_64.msiCMake 🛠️ Windows 安装步骤 双击下载好的 cmake-4.2.1-windows-x86_64.msi,点 Next 勾选 I accept the terms → Next 关键一步: 勾选 Add CMake to the system PATH for all users(必须勾,否则命令行找不到 cmake) 可选:勾选 Create CMake Desktop Icon 选择安装路径(默认 C:\Program Files\CMake 即可)→ Next 点 Install 开始安装 → 完成后点 Finish 验证安装 重启 PowerShell 亦即CMD唤起黑框框 键入命令 ``` cmake --version ``` 出现版本号(如 cmake version 4.2.1)即成功 ```bash # 创建构建目录[当前已经创建好了build文件夹] cd build # 使用 CMake 写出makefile文件 cmake .. -G "MinGW Makefiles" # 使用 CMake 构建 cmake --build . # 运行示例程序 .\KOBE.exe ``` ## 依赖 - C 标准库 - CMake 3.10+