using MvvmScaffoldFrame48.Model.StorageModel.Configs; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MvvmScaffoldFrame48.DLL.ConfigTools { public class ConfigService : IConfigService { #region 属性 /// /// 单例 /// private static ConfigService instance; public static ConfigService Instance => instance; /// /// 相机进程参数 /// private List _camerasConfig; public List CamerasProcessConfig => _camerasConfig; #endregion #region 公共事件 /// /// 加载参数 /// /// public bool LoadAsync() { bool result = false; if (!Directory.Exists(".\\Config\\")) { Directory.CreateDirectory(".\\Config\\"); return result; } GetCameraProcessConfig(); LoadConfigEvent?.Invoke(this, EventArgs.Empty); result = true; return result; } /// /// 保存参数 /// public void SaveAsync() { if (!Directory.Exists(".\\Config\\")) { Directory.CreateDirectory(".\\Config\\"); } SaveCameraProcessConfig(); } #endregion #region 回调事件 /// /// 加载参数的回调方法 /// public event EventHandler LoadConfigEvent; /// /// 保存参数的回调方法 /// public event EventHandler SaveConfigEvent; #endregion #region 私有事件 private ConfigService() { } private void GetCameraProcessConfig() { if (File.Exists(".\\Config\\CameraConfig.xml")) { _camerasConfig = XMLReadWrite.DeserializeFromXml>(".\\Config\\CameraProcessConfig.xml"); } else { //测试用代码,此处应为创建空配置,后续由图形界面控制新建配置 _camerasConfig = new List() { CreateCameraConfiguration(0, "ProcessingAlgorithm_CCDShuLi"), }; } } private void SaveCameraProcessConfig() { XMLReadWrite.SerializeToXml(_camerasConfig, ".\\Config\\CameraProcessConfig.xml"); } /// /// 创建新的相机配置 /// private CameraProcessConfigModel CreateCameraConfiguration(int cameraId, string ProcessingAlgorithm) { var config = new CameraProcessConfigModel { CameraId = cameraId, CameraSN = "K53474176", IsEnabled = true }; switch (ProcessingAlgorithm) { case "ProcessingAlgorithm": config.ProcessingAlgorithmName = "ProcessingAlgorithm"; config.AlgorithmParameters = XMLReadWrite.SerializeToString(new ProcessingAlgorithmConfigModel() { Threshold = 0.5, MinArea = 100, EnableFiltering = true, FilterType = "FilterType" }); break; case "ProcessingAlgorithm_CCDShuLi": config.ProcessingAlgorithmName = "ProcessingAlgorithm_CCDShuLi"; config.AlgorithmParameters = XMLReadWrite.SerializeToString(new ShuLiConfigClassModel()); break; } return config; } #endregion } }