FirmWare Installer (Serial Debug Tool)
A Windows desktop multi-function serial debug and firmware burn tool built with Qt C++. Integrates serial TX/RX, file transfer, custom command panel, WebSocket client & server, online ad image carousel and upload, supports HUP custom protocol and AES encryption, with auto persistent configuration.
Project Highlights
- Windows desktop application developed with Qt C++, built via Visual Studio project, using QTabWidget four-tab architecture (Serial, Advertise, WebSocket Client, WebSocket Server) with external QSS styling.
- Full-featured serial debug: auto-enumerates and refreshes available ports, supports baud rate 110~3000000 (including custom baud dialog), stop bit 1/1.5/2, data bit 5/6/7/8, parity None/Odd/Even, DTR/RTS flow control.
- Dual-mode TX/RX: receive supports text and HEX display, millisecond timestamp, save receive window to file and one-click clear; send supports text/HEX toggle, auto append newline, scheduled cyclic sending (configurable 1ms~24h).
- Serial file transfer: sends selected local file via serial in 128-byte chunks with real-time progress bar, suitable for firmware burning scenarios.
- Custom command panel: loads preset commands from cmds.json (text/hex/hup_text/hup_hex four data formats), displays as button grid, one-click send; supports dynamic add/delete commands and adjustable grid columns.
- HUP custom protocol support: built-in HUP frame format (header aadd + length + payload + checksum), can directly send hup_text and hup_hex format commands.
- Auto persistent configuration: uses QSettings to save serial parameters, checkbox states, send cycle, file path to config.ini, auto-restore on next launch.
- WebSocket Client: connects to specified server address, sends/receives text messages in real time, supports disconnect.
- WebSocket Server: listens on specified address and port, supports multiple concurrent clients, manages connection list via QMap, can send message to specific client, disconnect single client or stop server.
- Ad image carousel: dedicated network thread fetches ad image list from heartgo.top API and downloads locally, QTimer auto-rotates (3.8s interval), supports prev/next manual switch, mutex ensures thread safety for images.
- Image upload: integrates libcurl, uploads local images to server via multipart/form-data, returns HTTP status code and response content.
- Third-party libraries integrated: nlohmann/json for JSON parsing, spdlog logging system (singleton wrapper), tinyAES/SimpleAES encryption, libcurl for HTTP requests, ready to use.
- Multiple singleton wrappers: custom baud dialog, command add dialog, command setting dialog and logger all use singleton pattern for global sharing.