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 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
}
}