# LCD Display Configurator A Windows-based configuration utility and background service for customizing text output on ESP32-connected displays such as a 1602 LCD or a 4.6" TFT screen. ![Banner Image Placeholder](docs/images/banner.jpg) --- ## ๐Ÿ“ฆ Features - ๐Ÿ”Œ Communicates with ESP32 over USB serial - ๐Ÿ“Š Displays real-time system metrics (CPU, RAM, etc.) - โš™๏ธ Full GUI configurator with support for: - 1602 LCD - 4.6" TFT LCD (placeholder for future) - ๐Ÿ“ Config stored in AppData (shared between GUI and background service) - ๐Ÿ”„ Windows service auto-starts and auto-recovers on crash - ๐Ÿ’ก Modular and future-proof design for multiple display types --- ## ๐Ÿ–ฅ๏ธ Configuration UI The WinForms-based configuration tool allows you to: - Select system metrics using a dropdown populated from LibreHardwareMonitor - Customize line prefixes (e.g., `CPU: `) and suffixes (e.g., `%`, `ยฐC`) - Configure different screen types via tabbed interface ### ๐Ÿ”ง 1602 LCD Tab - Line-by-line customization - Metric + prefix/suffix control - Saves to shared config file in AppData > ![1602 LCD Tab Screenshot Placeholder](docs/images/1602.png) --- ### ๐Ÿ“บ 4.6" TFT LCD Tab - Coming soon! Layout planned for graphical display customization --- ### โ„น๏ธ About Tab Displays app info, version, and author attribution. --- ## ๐Ÿ› ๏ธ Windows Background Service - Continuously reads system metrics - Sends output to ESP32-connected LCD - Detects connected COM port automatically - Reloads config when `config.json` changes - Auto-recovers if the service crashes ### Service Config Example: ```json { "ScreenType": "1602", "Line1Selection": "Cpu: CPU Total (Load)", "Line1CustomText": "CPU: ", "Line1PostText": "%", "Line2Selection": "Memory: Used Memory (Data)", "Line2CustomText": "RAM: ", "Line2PostText": " GB" } ``` --- ## ๐Ÿ“‚ Config File Location The config file is shared between the UI and service and stored here: ``` %AppData%\PCPal\config.json ``` --- ## ๐Ÿ“ฆ Installation 1. **Clone the repo** 2. Build both projects: - `DisplayConfigurator` (WinForms app) - `ESP32BackgroundService` (Worker service) 3. Publish the service and install via `sc.exe` or PowerShell 4. Run the configurator to apply your settings --- ## ๐Ÿงช Development - Built using `.NET 6+` - Uses: - [`LibreHardwareMonitorLib`](https://github.com/LibreHardwareMonitor/LibreHardwareMonitor) - `Newtonsoft.Json` - `System.IO.Ports` --- ## ๐Ÿงฐ Tools & Commands ### Install the Service: ```powershell sc create ESP32BackgroundService binPath= "C:\Path\To\ESP32BackgroundService.exe" sc failure ESP32BackgroundService reset= 0 actions= restart/5000 ``` ### Uninstall the Service: ```powershell sc stop ESP32BackgroundService sc delete ESP32BackgroundService ``` --- ## ๐Ÿ“„ License MIT License ยฉ 2025 Christopher Koch aka, NinjaPug