123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace MV485.helper
- {
- public class ConfigManager
- {
- // 保存唯一实例的静态变量
- private static readonly Lazy<ConfigManager> _instance = new Lazy<ConfigManager>(() => new ConfigManager());
- private string configFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.ini");
- // 私有构造函数,防止外部直接创建实例
- private ConfigManager() { }
- // 获取唯一实例的公共属性
- public static ConfigManager Instance => _instance.Value;
- // 读取配置文件
- public Dictionary<string, string> LoadConfig()
- {
- var config = new Dictionary<string, string>();
- if (File.Exists(configFilePath))
- {
- string[] lines = File.ReadAllLines(configFilePath);
- foreach (var line in lines)
- {
- // 跳过空行和注释行
- if (string.IsNullOrWhiteSpace(line) || line.StartsWith("#"))
- continue;
- // 分割键和值
- var parts = line.Split(new[] { '=' }, 2);
- if (parts.Length == 2)
- {
- string key = parts[0].Trim();
- string value = parts[1].Trim();
- config[key] = value;
- }
- }
- }
- return config;
- }
- // 获取某一项的值
- public string GetConfigValue(ConfigKey key, string defaultValue = null)
- {
- var config = LoadConfig();
- string keyString = key.ToString();
- if (config.ContainsKey(keyString))
- {
- return config[keyString];
- }
- return defaultValue; // 如果没有找到该项,则返回默认值
- }
- // 更新配置项
- public void UpdateConfig(ConfigKey key, string newValue)
- {
- // 先加载现有的配置
- var config = LoadConfig();
- string keyString = key.ToString();
- // 如果配置文件中包含该项,则更新它
- if (config.ContainsKey(keyString))
- {
- config[keyString] = newValue;
- }
- else
- {
- // 如果没有该配置项,则添加新的键值对
- config.Add(keyString, newValue);
- }
- // 保存更新后的配置
- SaveConfig(config);
- }
- // 保存配置到文件
- public void SaveConfig(Dictionary<string, string> config)
- {
- using (StreamWriter writer = new StreamWriter(configFilePath))
- {
- foreach (var item in config)
- {
- writer.WriteLine($"{item.Key} = {item.Value}");
- }
- }
- }
- //-----------------------------------------------------------------------
- }
- public enum ConfigKey
- {
- //SearchPortName,
- SearchBaudrate, //搜索的波特率,逗号分割
- DevIdRange, //地址范围,逗号分割
- SerachTimeoutPer, //每设备超时时间,ms整数
- ConfigPortName, //...........
- ConfigBaudrate, //设备参数配置选项中波特率
- ConfigDevId, //......设备ID(地址)
- ReadInterval, //读取数据的间隔时间
- PageSize, //分页的大小
- DataLeftWidth, //数据监控左侧*的宽度
- AutoListenData, //自动监听数据
- IsSearchOne, //搜索一个设备
- SaveImagePath, //图像的保存路径
- UpgradeFile, //升级文件全路径
- // 其他配置项...
- }
- //-----------------------------------------------
- }
|