You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.9 KiB
48 lines
1.9 KiB
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; } = "<end>";
|
|
|
|
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", "<end>")
|
|
};
|
|
}
|
|
|
|
private static string GetString(Dictionary<string, string> values, string key, string defaultValue)
|
|
{
|
|
return values.TryGetValue(key, out var value) && !string.IsNullOrWhiteSpace(value)
|
|
? value.Trim()
|
|
: defaultValue;
|
|
}
|
|
|
|
private static int GetInt(Dictionary<string, string> values, string key, int defaultValue)
|
|
{
|
|
return values.TryGetValue(key, out var value) && int.TryParse(value, out var result)
|
|
? result
|
|
: defaultValue;
|
|
}
|
|
}
|
|
|