using System.IO; namespace Housing.Services; public sealed class BoardHardwareSettings { public string PortName { get; set; } = "Auto"; public int BaudRate { get; set; } = 115200; public int ReadTimeout { get; set; } = 5000; public string ConnectCommand { get; set; } = "x00c_001101:owt28006727ea97c7801"; public string ReadIdCommand { get; set; } = "x00c_001101:ow2800326003e"; public string CalDefaultCommand { get; set; } = "x00c_001001"; public string EndToken { get; set; } = ""; public static BoardHardwareSettings Load(string filePath) { if (!File.Exists(filePath)) { throw new FileNotFoundException("Hardware.ini 파일을 찾을 수 없습니다.", filePath); } var values = IniFile.LoadSection(filePath, "Board"); return new BoardHardwareSettings { PortName = GetString(values, "PortName", "Auto"), BaudRate = GetInt(values, "BaudRate", 115200), ReadTimeout = GetInt(values, "ReadTimeout", 5000), ConnectCommand = GetString(values, "ConnectCommand", "x00c_001101:owt28006727ea97c7801"), ReadIdCommand = GetString(values, "ReadIdCommand", "x00c_001101:ow2800326003e"), CalDefaultCommand = GetString(values, "CalDefaultCommand", "x00c_001001"), EndToken = GetString(values, "EndToken", "") }; } private static string GetString(Dictionary values, string key, string defaultValue) { return values.TryGetValue(key, out var value) && !string.IsNullOrWhiteSpace(value) ? value.Trim() : defaultValue; } private static int GetInt(Dictionary values, string key, int defaultValue) { return values.TryGetValue(key, out var value) && int.TryParse(value, out var result) ? result : defaultValue; } }