# Can_Monitor **Repository Path**: lvya123go/Can_Monitor ## Basic Information - **Project Name**: Can_Monitor - **Description**: Can_Monitor 顾名思义是一款易用的CAN监控上位机。目前支持周立功USBCAN-II以及吉阳光电GY8507两款CAN盒。Can_Monitor 支持用户自定义显示内容,通过修改提供的json 文件配置模版,用户可以快速定制显示的内容,从而零编码实现所需要的监控功能。 - **Primary Language**: C/C++ - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 2 - **Created**: 2025-02-06 - **Last Updated**: 2025-09-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Can_Monitor 一款基于Qt开发的易用型CAN监控上位机软件,支持多种CAN接口设备(如周立功USBCAN-II、吉阳光电GY8507等),具备实时数据监控、数据报警、历史日志记录、CAN调试以及事件记录等功能,可帮助用户快速实现对CAN总线数据的监控与分析。 ## 项目简介 `Can_Monitor`是一款面向CAN总线通信的监控工具,适用于汽车电子、工业自动化、智能交通等领域。它通过简洁的图形界面,让用户能够直观地查看和分析CAN总线上的数据,同时支持多种实用功能,如数据报警、历史日志记录、CAN调试等,满足不同用户的需求。 ## 项目特点 - **多设备支持**:兼容周立功USBCAN-II、吉阳光电GY8507等主流CAN接口设备,满足不同用户需求。 - **自定义显示**:通过简单修改JSON配置文件,用户可灵活定制显示内容,无需编码即可实现个性化监控功能。 - **功能丰富**:涵盖实时数据监控、数据报警、历史日志记录、CAN调试以及趋势图展示等多种实用功能,满足不同场景下的使用需求。 - **易用性高**:基于Qt框架开发,界面友好,操作简便,易于上手。 ## 开发环境 - **编程语言**:C++(Qt框架) - **开发工具**:Qt Creator - **操作系统**:Windows 11 X64 - **Qt版本**:Qt 5.14.1 ## 功能模块 ### 实时数据监控 实时接收并显示CAN总线上的数据帧,支持多种数据格式解析,用户可直观查看当前CAN总线上的通信数据。 ### 数据报警 根据用户设定的报警阈值,对特定数据进行实时监测,当数据超出阈值范围时,自动触发报警提示,及时提醒用户关注异常情况。 ### 历史日志记录 自动记录CAN总线上的通信数据及事件信息,生成详细的历史日志文件,方便用户后续进行数据追溯与分析。 ### CAN调试 提供CAN帧发送功能,用户可自定义CAN帧的ID、数据内容等参数,快速进行CAN总线的调试与测试工作。 ### 事件记录(开发中) 正在开发中的功能模块,未来将支持对特定事件的详细记录与分析,为用户深入研究CAN总线通信行为提供有力支持。 ### 趋势图展示(开发中) 同样处于开发阶段,旨在通过图形化方式展示特定数据随时间的变化趋势,帮助用户更直观地理解数据动态。 ## 使用教程 ### 安装与启动 1. 下载并安装Qt框架(推荐版本:Qt 5.14.1)。 2. 克隆本项目代码至本地。 3. 使用Qt Creator打开项目文件,配置好相应的编译器与运行环境。 4. 编译并运行项目,启动`Can_Monitor`软件。 ### 配置设备 1. 在软件界面中选择对应的CAN设备类型(如周立功USBCAN-II、吉阳光电GY8507等)。 2. 根据实际连接情况,选择对应的设备通道(如通道0、通道1等)。 3. 设置合适的波特率(如50K、100K、125K等),确保与硬件设备一致。 4. 点击“打开CAN设备”按钮,完成设备连接。 ### 自定义显示内容 1. 找到项目提供的JSON配置文件模板。 2. 根据模板格式,修改其中的参数,如变量名、帧ID、数据类型、数据偏置、显示值与实际值的倍率等,以定义自己需要监控的数据内容。 3. 保存修改后的JSON文件,并在软件中加载对应的配置文件,即可实现自定义显示功能。 ### 数据监控与操作 1. 在实时数据监控界面,查看当前CAN总线上的通信数据,包括帧ID、数据内容等信息。 2. 如需发送CAN帧进行调试,可在CAN调试界面填写相应的帧ID、数据内容等参数,点击发送按钮即可将数据发送至CAN总线。 3. 观察历史日志记录界面,查看软件自动记录的通信数据及事件信息,方便后续进行数据追溯与分析。 ## 项目结构 - **`GY85XX_x64/`**:GY8507二次开发动态库 - **`GY85XX_x32/`**:GY8507二次开发动态库 - **`Debug/`**:含编译生成的目标文件和用户配置文件 - **`ControlCAN.h`**:包含了与周立功USBCAN-II等设备相关的接口定义、数据结构及常量定义,为与设备通信提供接口支持。 - **`GY_8507.c`**:集中管理了与吉阳光电GY8507设备相关的函数调用,便于进行设备操作。 - **`canframe.h`**:定义了CAN帧结构及相关标识符,为CAN数据的解析与处理提供基础。 - **`config.h`**:定义了配置项的元数据结构,用于描述配置项的类型、描述、是否只读等信息。 - **`ControlCAN.h`**:包含了与周立功USBCAN-II等设备相关的接口定义、数据结构及常量定义,为与设备通信提供接口支持。 - **`GY_8507.c`**:集中管理了与吉阳光电GY8507设备相关的函数调用,便于进行设备操作。 - **`GY_8507_Func.h`**:定义了与吉阳光电GY8507设备相关的函数声明及变量声明,为设备操作提供接口。 - **`historytable.cpp`**:实现了历史事件记录表的功能,包括表格的初始化、事件添加、数据保存与加载等操作。 - **`historytable.h`**:定义了历史事件记录表的类结构及相关接口,用于展示历史事件信息。 - **`log_Gen.cpp`**:提供了日志生成与解析相关功能的实现,包括日志文件的创建、日志信息的插入、日志内容的读取与解析等。 - **`log_Gen.h`**:定义了日志生成与解析相关的数据结构、函数声明及全局变量,为日志操作提供接口支持。 - **`main.cpp`**:项目的入口文件,负责初始化应用程序并启动主窗口。 - **`mainwindow.cpp`**:实现了主窗口的功能,包括界面布局、设备操作、数据监控、日志管理等核心功能。 - **`mainwindow.h`**:定义了主窗口的类结构及相关接口,为软件的主体功能提供框架支持。 - **`MyQjson.cpp`**:实现了JSON数据的处理功能,包括JSON对象的创建、JSON文件的读写、JSON数组的解析等,用于支持配置文件的读取与修改。 - **`MyQjson.h`**:定义了JSON数据处理相关的数据结构、函数声明及接口,为JSON操作提供接口支持。 - **`mythread.cpp`**:实现了数据接收线程的功能,负责从CAN设备接收数据并将其发送至主线程进行处理。 - **`mythread.h`**:定义了数据接收线程的类结构及相关接口,用于支持多线程数据接收功能。 - **`plotdialog.cpp`**:实现了趋势图展示对话框的功能,包括图形的绘制、鼠标交互事件处理等,为数据趋势展示提供可视化支持。 - **`plotdialog.h`**:定义了趋势图展示对话框的类结构及相关接口,用于支持趋势图展示功能。 - **`typedef.h`**:定义了项目中使用到的各类数据类型别名,便于代码的统一与简洁。 - **`ui_mainwindow.h`**:由Qt的UI设计器生成,包含了主窗口界面的布局信息及相关控件的定义。 - **`zlgcan.h`**:包含了与周立功CAN设备相关的接口定义、数据结构及常量定义,为与设备通信提供接口支持。 ## 依赖库 - **Qt框架**:用于构建图形用户界面及实现多线程等功能。 - **QCustomPlot**:用于绘制趋势图,展示数据随时间的变化趋势。 ## 用户配置Json 文件及log文件说明 用户json文件位于应用路径下DEV文件夹下,其结构如下 ```plaintext Debug/ +++++++++++++++++++++++++++++++ exe所在目录 ├── default/++++++++++++++++++++++++++ 示例设备 │ ├── log/++++++++++++++++++++++++++ 日志目录 │ │ │ │ │ └── YYYY-MM-DD.log++++++++++++ log文件 │ │ │ ├── Dis_Config.json+++++++++++++++ 数值显示配置文件 │ ├── Lab_Config.json+++++++++++++++ 状态显示配置文件 │ └── Wrt_Config.json+++++++++++++++ 数值输入配置文件 │ ├── MYDEV/++++++++++++++++++++++++++ 示例设备 │ ├── log/++++++++++++++++++++++++++ 日志目录 │ │ │ │ │ └── YYYY-MM-DD.log++++++++++++ log文件 │ │ │ ├── Dis_Config.json+++++++++++++++ 数值显示配置文件 │ ├── Lab_Config.json+++++++++++++++ 状态显示配置文件 │ └── Wrt_Config.json+++++++++++++++ 数值输入配置文件 ``` 每个设备都有三个配置文件对应数值显示、状态显示、数值输入三种控件,其字段定义一样,仅靠命名区分 ``` "01_var_name": "恒压1(V)", // 变量标签文本,可自定义 "02_frame_id": "0x00100120", // CAN ID,目前支持扩展帧,16进制 "03_header": "0x2804", // 帧头,即协议功能码,(byte0、byte1) 16进制 "04_data_type": "2", // 类型 "05_data_ptr": "6", // 字节位置,2~7可选,对应CAN报文字节数据byte2~byte7 "06_data_len": "2", // 数据长度:该数据字节宽度,默认 byte(N) byte(N+1) "07_offset": "0", // 数据偏置 "08_dis_real_coff": "1024", // 数据倍率 显示值 = (CAN数值-07_offset)/08_dis_real_coff "09_up_Limt": "20.5", // 数据告警上限[红色]/输入上限 "10_dn_Limt": "0" // 数据告警下限[蓝色]/输入下限 ``` ## 效果演示 ![demo.gif](https://gitee.com/lvya123go/Can_Monitor/raw/master/demo.gif) ## 贡献指南 欢迎各位开发者参与本项目的贡献,共同推动项目的发展与完善。以下是参与贡献的建议步骤: 1. **Fork项目**:点击Gitee页面上的"Fork"按钮,将项目复制到自己的Gitee仓库。 2. **克隆代码**:将Fork后的项目代码克隆至本地开发环境。 3. **创建分支**:基于`main`分支创建一个新的分支,用于开发自己的功能或修复问题。 4. **进行开发**:在新分支上进行代码开发,遵循项目的代码规范与开发流程。 5. **提交更改**:完成开发后,将更改提交至自己的Gitee仓库。 6. **发起Pull Request**:在Gitee上发起一个Pull Request,将更改提交至项目的`main`分支。 7. **等待审核**:项目维护者会对您的Pull Request进行审核,如有需要,可能会要求您进行进一步的修改或补充。 ## 联系方式 - **邮箱**:[17702733242@163.com](mailto:17702733242@163.com) - **Gitee**:[https://gitee.com/lvya123go](https://gitee.com/lvya123go) ## 许可证 本项目采用[Mulan PSL v2](LICENSE),您可以自由使用、修改及分发项目代码,但需遵守许可证