# 共享内存管理程序 **Repository Path**: luohe666/shared-memory-manager ## Basic Information - **Project Name**: 共享内存管理程序 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-06 - **Last Updated**: 2025-08-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 共享内存数据展示器 一个基于PyQt6的共享内存数据实时监控和展示工具,支持多种数据类型的读取、格式化显示、历史数据图表和统计分析。 ## 功能特性 ### 核心功能 - **多类型数据支持**: 支持int、float、double、string、bytes、array等数据类型 - **实时数据监控**: 可配置的刷新频率,实时读取共享内存数据 - **数据格式化**: 支持多种显示格式(自动、十六进制、二进制、科学计数法等) - **历史数据记录**: 自动记录历史数据点,支持数据导出 ### 界面功能 - **配置管理**: 图形化配置共享内存连接参数 - **批量操作**: 支持"连接全部"和"全部断开"功能,一键管理所有共享内存连接 - **数据展示**: 表格形式展示实时数据和详细信息 - **图表显示**: 基于pyqtgraph的实时数据图表(可选) - **统计分析**: 数据统计信息(最值、平均值、标准差等) ### 高级功能 - **配置持久化**: 自动保存和恢复用户配置 - **数据导出**: 支持CSV和JSON格式的数据导出 - **错误处理**: 完善的异常处理和用户提示 - **日志记录**: 详细的操作日志记录 ## 安装要求 ### 必需依赖 ```bash pip install PyQt6 numpy pandas pyyaml loguru typing-extensions ``` ### 可选依赖 ```bash pip install pyqtgraph matplotlib # 用于图表功能 pip install pytest pytest-qt black flake8 mypy # 用于开发和测试 ``` ### 快速安装 ```bash pip install -r requirements.txt ``` ## 使用方法 ### 启动应用程序 ```bash python main.py ``` ### 基本使用流程 1. **连接共享内存** - 点击"连接"按钮 - 输入共享内存名称 - 选择数据类型 - 设置内存大小 - 点击"确定"连接 2. **查看数据** - 在"实时数据"标签页查看当前数据 - 在"图表"标签页查看历史趋势 - 在"统计"标签页查看统计信息 3. **批量操作** - 点击"连接全部"按钮一键连接所有配置的共享内存 - 点击"全部断开"按钮一键断开所有已连接的共享内存 - 操作过程中显示实时进度和结果统计 4. **配置选项** - 设置刷新频率 - 选择数据显示格式 - 配置历史数据保留数量 5. **数据导出** - 通过"文件"菜单导出数据 - 支持CSV和JSON格式 ### 创建测试数据 使用提供的示例脚本创建测试用共享内存: ```bash # 创建静态和动态测试数据 python examples/create_test_memory.py # 只创建静态数据 python examples/create_test_memory.py --static-only # 只创建动态数据 python examples/create_test_memory.py --dynamic-only # 运行指定时间后自动退出 python examples/create_test_memory.py --duration 60 ``` ## 项目结构 ``` 共享内存内容监控/ ├── src/ # 源代码目录 │ ├── core/ # 核心功能模块 │ │ ├── shared_memory_manager.py # 共享内存管理 │ │ ├── data_processor.py # 数据处理 │ │ └── config_manager.py # 配置管理 │ ├── gui/ # GUI界面模块 │ │ ├── main_window.py # 主窗口 │ │ └── widgets/ # 自定义组件 │ │ ├── memory_config_widget.py # 内存配置组件 │ │ ├── data_display_widget.py # 数据显示组件 │ │ ├── chart_widget.py # 图表组件 │ │ └── statistics_widget.py # 统计组件 │ └── utils/ # 工具模块 │ ├── logger.py # 日志管理 │ └── validators.py # 数据验证 ├── test/ # 测试代码 │ ├── test_shared_memory.py # 共享内存测试 │ └── test_gui.py # GUI测试 ├── examples/ # 示例代码 │ └── create_test_memory.py # 创建测试数据 ├── config.py # 应用配置 ├── requirements.txt # 依赖列表 ├── main.py # 主程序入口 └── README.md # 项目说明 ``` ## 支持的数据类型 | 类型 | 描述 | 示例 | |------|------|------| | int | 32位整数 | 42 | | float | 32位浮点数 | 3.14 | | double | 64位浮点数 | 2.718281828 | | string | UTF-8字符串 | "Hello World" | | bytes | 字节数据 | b'\x01\x02\x03' | | array_int | 整数数组 | [1, 2, 3, 4, 5] | | array_float | 浮点数组 | [1.1, 2.2, 3.3] | ## 配置说明 ### 应用配置 (config.py) - `WINDOW_WIDTH/HEIGHT`: 窗口默认大小 - `REFRESH_INTERVAL`: 默认刷新间隔(毫秒) - `MAX_HISTORY_POINTS`: 最大历史数据点数 - `LOG_LEVEL`: 日志级别 ### 用户配置 (自动保存) - 窗口位置和大小 - 共享内存连接配置 - 显示格式偏好 - 最近使用的内存列表 ## 开发和测试 ### 运行测试 ```bash # 运行所有测试 python -m pytest test/ # 运行特定测试 python test/test_shared_memory.py python test/test_gui.py # 创建测试用共享内存 python test/test_shared_memory.py --create-test ``` ### 代码格式化 ```bash black src/ test/ examples/ ``` ### 类型检查 ```bash mypy src/ ``` ### 代码质量检查 ```bash flake8 src/ test/ examples/ ``` ## 高价值使用场景 ### 1. 多进程应用调试与监控 **价值**: 在开发多进程应用时,能够实时监控进程间的数据交换,快速定位问题 **使用方式**: - 监控进程间通信的数据流 - 实时查看共享状态变量 - 分析数据传输的频率和模式 - 导出数据用于离线分析 ### 2. 实时系统性能监控 **价值**: 对于实时系统,能够监控关键性能指标,确保系统稳定运行 **使用方式**: - 监控系统负载、内存使用率等指标 - 实时显示传感器数据 - 跟踪系统状态变化 - 设置阈值告警 ### 3. 工业控制系统数据可视化 **价值**: 在工业环境中,能够可视化PLC、传感器等设备的数据,提高操作效率 **使用方式**: - 显示设备状态和参数 - 监控生产线数据 - 记录历史趋势 - 导出报表数据 ## 故障排除 ### 常见问题 1. **无法连接共享内存** - 检查共享内存名称是否正确 - 确认共享内存是否已创建 - 验证数据类型和大小设置 2. **图表功能不可用** - 安装pyqtgraph: `pip install pyqtgraph` - 重启应用程序 3. **数据显示异常** - 检查数据类型是否匹配 - 确认内存大小设置正确 - 查看日志文件获取详细错误信息 ### 日志文件位置 - Windows: `%APPDATA%/shared_memory_viewer/logs/` - Linux/Mac: `~/.local/share/shared_memory_viewer/logs/` ## 贡献指南 1. Fork 项目 2. 创建功能分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 打开 Pull Request ## 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情 ## 版本信息 ### v1.2.0 (2025-08-06) - ✅ 新增"全部断开"功能,支持一键断开所有共享内存连接 - ✅ 修复_connect_all_stats属性访问错误 - ✅ 优化批量操作的用户体验和错误处理 - ✅ 完善状态管理和进度显示 - ✅ 增强并发安全性和异常处理 ### v1.1.0 (2025-08-05) - ✅ 实现"连接全部"功能 - ✅ 添加批量操作进度显示 - ✅ 优化用户界面布局 - ✅ 完善配置管理功能 ### v1.0.0 (2025-08-04) - ✅ 基础共享内存监控功能 - ✅ 多数据类型支持 - ✅ 实时数据显示和图表 - ✅ 配置持久化 ## 作者 - **luohe** - *初始开发* - [GitHub](https://github.com/luohe) ## 致谢 - PyQt6 团队提供的优秀GUI框架 - pyqtgraph 项目提供的高性能图表组件 - Python multiprocessing 模块的共享内存支持