Added better log file path and name exception handling to avoid situations where a manually-typed log file path and name resulted in possibly invalid data being written to the config file. The log file path is now also validated upon being read from the config file.
Main and Small windows now display reasonably when the display resolution is set to 125%. Previously the screen elements were all over the place after switching from the small to the main window. The EEPROM utility wasn't affected as badly as the monitor but it should at least be usable under 125% scaling (120 DPI).
This endeavor consumed an inordinate amount of time as the support for uniform scaling (and the prevention of scaling) of controls in WinForms within .NET is just plain broken. Due to this limitation, I won't be fixing this capability any further (for higher DPI). The only real solution is to abandon WinForms and adopt the Windows Presentation Foundation (WPF) for window layout. That's a big undertaking considering the number of elements on the window and the custom LED library.
The test environment now includes Windows 8.1 64-bit.
Upgraded the development environment to Visual Studio Professional 2013.
Upgraded the installer environment to Inno Setup 5.5.5 for Unicode support.
Replaced the single-resolution alpha icon with a multi-resolution, multi-color depth icon. The original icon was sized only for the title bar of the app and looked pretty nasty as a desktop shortcut or task tray icon. The new icon has 13 different resolutions and color depths from 256x256 RGB/A down to 16x16 16 color.
The installer package, program executables and DLL and uninstaller are all now digitally signed. Now when you run the installer it will reflect my name as the publisher rather than . This also provides assurance these files came from me and weren't modified.
The program executables and DLL are now strong-name signed .NET assemblies. This allows Windows to better manage the versioning of these files in the global assembly cache.
Some of the changes above are development/publishing best-practices related and have little to no effect on the usage of the monitor. With those out of the way, I can now focus on cleaning up the monitor code in preparation to apply the same multi-threading model I used for he EEPROM utility to the monitor. That model allowed for clean exits without the serial port closure causing the utility to hang as happens all too often with the monitor. Thank you for your patience. This update took much longer than anticipated.