ConfigManager.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace MV485.helper
  8. {
  9. public class ConfigManager
  10. {
  11. // 保存唯一实例的静态变量
  12. private static readonly Lazy<ConfigManager> _instance = new Lazy<ConfigManager>(() => new ConfigManager());
  13. private string configFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.ini");
  14. // 私有构造函数,防止外部直接创建实例
  15. private ConfigManager() { }
  16. // 获取唯一实例的公共属性
  17. public static ConfigManager Instance => _instance.Value;
  18. // 读取配置文件
  19. public Dictionary<string, string> LoadConfig()
  20. {
  21. var config = new Dictionary<string, string>();
  22. if (File.Exists(configFilePath))
  23. {
  24. string[] lines = File.ReadAllLines(configFilePath);
  25. foreach (var line in lines)
  26. {
  27. // 跳过空行和注释行
  28. if (string.IsNullOrWhiteSpace(line) || line.StartsWith("#"))
  29. continue;
  30. // 分割键和值
  31. var parts = line.Split(new[] { '=' }, 2);
  32. if (parts.Length == 2)
  33. {
  34. string key = parts[0].Trim();
  35. string value = parts[1].Trim();
  36. config[key] = value;
  37. }
  38. }
  39. }
  40. return config;
  41. }
  42. // 获取某一项的值
  43. public string GetConfigValue(ConfigKey key, string defaultValue = null)
  44. {
  45. var config = LoadConfig();
  46. string keyString = key.ToString();
  47. if (config.ContainsKey(keyString))
  48. {
  49. return config[keyString];
  50. }
  51. return defaultValue; // 如果没有找到该项,则返回默认值
  52. }
  53. // 更新配置项
  54. public void UpdateConfig(ConfigKey key, string newValue)
  55. {
  56. // 先加载现有的配置
  57. var config = LoadConfig();
  58. string keyString = key.ToString();
  59. // 如果配置文件中包含该项,则更新它
  60. if (config.ContainsKey(keyString))
  61. {
  62. config[keyString] = newValue;
  63. }
  64. else
  65. {
  66. // 如果没有该配置项,则添加新的键值对
  67. config.Add(keyString, newValue);
  68. }
  69. // 保存更新后的配置
  70. SaveConfig(config);
  71. }
  72. // 保存配置到文件
  73. public void SaveConfig(Dictionary<string, string> config)
  74. {
  75. using (StreamWriter writer = new StreamWriter(configFilePath))
  76. {
  77. foreach (var item in config)
  78. {
  79. writer.WriteLine($"{item.Key} = {item.Value}");
  80. }
  81. }
  82. }
  83. //-----------------------------------------------------------------------
  84. }
  85. public enum ConfigKey
  86. {
  87. //SearchPortName,
  88. SearchBaudrate, //搜索的波特率,逗号分割
  89. DevIdRange, //地址范围,逗号分割
  90. SerachTimeoutPer, //每设备超时时间,ms整数
  91. ConfigPortName, //...........
  92. ConfigBaudrate, //设备参数配置选项中波特率
  93. ConfigDevId, //......设备ID(地址)
  94. ReadInterval, //读取数据的间隔时间
  95. PageSize, //分页的大小
  96. DataLeftWidth, //数据监控左侧*的宽度
  97. AutoListenData, //自动监听数据
  98. IsSearchOne, //搜索一个设备
  99. SaveImagePath, //图像的保存路径
  100. UpgradeFile, //升级文件全路径
  101. // 其他配置项...
  102. }
  103. //-----------------------------------------------
  104. }