# Gin-Flutter-Fan **Repository Path**: anydev/Gin-Flutter-Fan ## Basic Information - **Project Name**: Gin-Flutter-Fan - **Description**: 一个 PMSM 风机监测系统的学习项目,可通过桌面客户端远程启动电机控制器并实时监测运行数据。后端采用 Go + Gin 框架开发 HTTP 和 TCP Socket 服务,客户端采用 Flutter 框架开发跨平台桌面应用 (Windows/macOS/Linux),网关采用 C# .NET Framework 4.8 实现 RS485 串口数据透传,数据存储使用 SQLite 数据库。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-31 - **Last Updated**: 2026-07-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: Go语言 ## README # PMSM风机监测系统 ## 项目概述 一套完整的PMSM(永磁同步电机)风机监测解决方案,包含桌面客户端、后端服务和上位机网关软件。系统通过RS485串口通信采集风机运行数据,经网关转发至后端服务器,前端桌面应用实时展示监测数据并支持远程控制。 ### 项目框架图 ```mermaid flowchart LR subgraph 现场层 风机[PMSM 风机] end subgraph 采集层 RS485[RS485 串口] WinCC[WinCC 网关] end subgraph 服务层 TCP[TCP Socket
:8000] HTTP[HTTP 服务
:8080] SQLite[(SQLite
数据库)] end subgraph 展示层 AppGUI[Flutter 桌面客户端] end 风机 -->|数据采集| RS485 RS485 -->|串口通信| WinCC WinCC -->|TCP 转发| TCP TCP -->|数据存储/查询| HTTP HTTP -->|WebSocket 推送| AppGUI HTTP <-->|数据持久化| SQLite style 风机 fill:#e1f5fe,stroke:#01579b style RS485 fill:#e8f5e9,stroke:#2e7d32 style WinCC fill:#fff3e0,stroke:#e65100 style TCP fill:#fce4ec,stroke:#c2185b style HTTP fill:#f3e5f5,stroke:#7b1fa2 style SQLite fill:#efebe9,stroke:#5d4037 style AppGUI fill:#e0f7fa,stroke:#00838f ``` ## 技术栈 | 模块 | 技术栈 | 说明 | |------|--------|------| | **AppGUI** | Flutter 3.41.0 | Windows桌面客户端,使用Dio HTTP客户端、WebSocket实时通信、EventBus事件总线 | | **WebServer** | Go 1.26、Gin v1.10.0、SQLite | 后端HTTP服务,使用Swagger生成API文档,SQLite存储数据,Gorilla WebSocket推送实时数据 | | **WinCC** | C# .NET Framework 4.8 | 上位机网关,RS485串口通信,TCP转发,CRC16校验 | ## 数据库 使用 **SQLite** 作为嵌入式数据库,无需额外安装数据库服务,数据文件默认存储在 `WebServer/data/webserver.db`。 ## API接口文档 后端服务使用 **Swagger** 自动生成API文档,启动服务后访问 Swagger UI 查看完整的接口文档。 ## 项目结构 ``` 07_Gin-Flutter-WOL/ ├── AppGUI/ # Flutter桌面客户端 │ ├── lib/ │ │ ├── api/ # HTTP请求、API配置、环境变量 │ │ ├── base/ # 基础数据模型 │ │ ├── components/ # UI组件(Toast、对话框、列表等) │ │ ├── fan_controllers/ # 风机控制器页面 │ │ ├── more/ # 设置页面、WebSocket │ │ └── providers/ # 状态管理 │ ├── images/ # 图片资源 │ ├── windows/ # Windows平台配置 │ └── pubspec.yaml │ ├── WebServer/ # Go后端服务 │ ├── src/ │ │ ├── config/ # 配置加载 │ │ ├── controllers/ # 请求处理、设备管理、协议解析 │ │ ├── httpserver/ # Gin HTTP服务封装 │ │ ├── models/ # 数据模型、数据库操作 │ │ ├── net/ # TCP Socket监听 │ │ ├── routers/ # 路由注册 │ │ └── sysinit/ # 系统初始化 │ ├── conf/ # 配置文件 (config.conf) │ ├── data/ # SQLite数据库文件 │ ├── doc/ # Swagger API文档 │ └── main.go │ ├── WinCC/ # C#上位机网关 │ ├── Core/ # 核心逻辑(网关、串口、TCP客户端) │ ├── Protocol/ # 通信协议(帧解析、CRC16校验) │ ├── Utils/ # 日志工具 │ ├── config.json # 网关配置文件 │ └── WinCC.csproj │ ├── docs/ # 项目文档 └── README.md ``` ## 快速开始 ### AppGUI (Flutter Windows) ```bash cd AppGUI flutter pub get flutter build windows --release # 输出: build/windows/x64/runner/Release/mywindows.exe ``` ### WebServer (Go) ```bash cd WebServer go run main.go # 默认端口: 8080(HTTP),8000(TCP Socket) # Swagger文档: http://localhost:8080/swagger/index.html ``` 配置文件 `conf/config.conf`(首次运行自动生成): ```json { "WebPort": 8080, "SocketPort": 8000, "DBPath": "data/webserver.db", "FilePath": "upload" } ``` ### WinCC (C#) ```bash # 使用 Visual Studio 打开 WinCC.slnx 编译运行 # 或命令行指定配置文件: WinCC.exe -c config.json ``` 配置文件 `config.json`: ```json { "serial": { "port": "COM3", "baudRate": 19200 }, "server": { "ip": "112.74.182.249", "port": 20019 }, "gateway": { "id": 1, "heartbeatInterval": 15000 }, "log": { "level": "info", "path": "./logs/gateway.log" } } ``` ## 核心功能 - **风机监控**: 实时监测电压、电流、转速、温度、振动加速度等参数 - **远程控制**: 设置转速、风量等级、运行模式 - **多设备支持**: 支持PMSM10C、PMSM04E、PMSM15、PMSM10A四种机型 - **实时推送**: WebSocket实时推送设备数据变更 - **演示模式**: 无需连接服务器即可演示 - **OTA更新**: 支持应用版本更新 ## 演示数据 项目内置演示数据,默认使用演示模式运行: - 8个风机设备(4种类型各2个) - 实时监测数据模拟 - 控制参数模拟 ## 开发环境 - Flutter SDK 3.41.0 - Go 1.26+ - .NET Framework 4.8 - Visual Studio 2026 ## 注意事项 - 国内用户需配置Flutter镜像源 - Windows桌面开发需启用开发者模式 - SQLite数据库文件在首次运行时自动创建 - WinCC网关需要串口硬件支持,无硬件时可使用演示模式