123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Runtime.InteropServices;
- using System.Runtime.Remoting.Messaging;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using PaintDotNet.Base.CommTool;
- using PaintDotNet.Base.SettingModel;
- using PaintDotNet.Camera;
- namespace PaintDotNet.ImageCollect
- {
- public class CameraConfigs
- {
- private string m_filePath = Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\CameraParam\\";
- private static CameraConfigs m_cameraConfig = null;
- private CameraParamModel m_currentCameraParamModel = null;
- private string m_currentConfigFileName = null;
- private CameraConfigs()
- {
- if (!System.IO.Directory.Exists(m_filePath))
- {
- System.IO.Directory.CreateDirectory(m_filePath);//不存在就创建目录
- }
- }
- public static CameraParamModel.ParameterSets Settings
- {
- get
- {
- return GetInstance().m_currentCameraParamModel.parame;
- }
- }
- public static CameraConfigs GetInstance()
- {
- if (m_cameraConfig == null)
- {
- m_cameraConfig = new CameraConfigs();
- try
- {
- var name = Startup.instance.configModel.CameraConfig;
- m_cameraConfig.m_currentConfigFileName = name == null ? "CameraParam" : name;
- m_cameraConfig.m_currentCameraParamModel = m_cameraConfig.GetCameraParamModel(m_cameraConfig.m_currentConfigFileName);
- }
- catch
- {
- m_cameraConfig.m_currentConfigFileName = "CameraParam";
- m_cameraConfig.m_currentCameraParamModel = m_cameraConfig.GetCameraParamModel(m_cameraConfig.m_currentConfigFileName);
- }
- }
- return m_cameraConfig;
- }
- public string FilePath
- {
- get
- {
- return this.m_filePath;
- }
- }
- public string CurrentConfigFileName
- {
- get
- {
- return this.m_currentConfigFileName;
- }
- }
- /// <summary>
- /// 获取所有相机配置文件名称
- /// </summary>
- /// <returns></returns>
- public List<string> GetAllConfigFiles()
- {
- List<string> configs = new List<string>();
- DirectoryInfo TheFolder = new DirectoryInfo(m_filePath);
- foreach (FileInfo NextFile in TheFolder.GetFiles())
- {
- configs.Add(NextFile.Name.Replace(".xml", ""));
- }
- return configs;
- }
- public Boolean FileExist(string fileName)
- {
- DirectoryInfo TheFolder = new DirectoryInfo(m_filePath);
- foreach (FileInfo NextFile in TheFolder.GetFiles())
- {
- if (NextFile.Name.ToLower().Equals(fileName.ToLower() + ".xml"))
- {
- return true;
- }
- }
- return false;
- }
- /// <summary>
- /// 获取配置文件的完整路径
- /// </summary>
- /// <param name="fileName">文件名</param>
- /// <returns></returns>
- public string GetFileFullPath(string fileName)
- {
- string filePath = this.m_filePath;
- if (fileName.ToLower().Contains(".xml"))
- {
- filePath += fileName.ToLower();
- }
- else
- {
- filePath += fileName + ".xml";
- }
- return filePath;
- }
- /// <summary>
- /// 读取配置参数
- /// </summary>
- /// <param name="fileName">配置文件名称</param>
- /// <returns></returns>
- public CameraParamModel GetCameraParamModel(string fileName)
- {
- try
- {
- string filePath = GetFileFullPath(fileName);
- m_currentConfigFileName = fileName;
- m_currentCameraParamModel = XmlSerializeHelper.DESerializer<CameraParamModel>(FileOperationHelper.ReadStringFromFile(filePath, FileMode.Open));
- }
- catch (Exception)
- {
- m_currentCameraParamModel = XmlSerializeHelper.DESerializer<CameraParamModel>(FileOperationHelper.ReadStringFromFile(Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\CameraParam.xml", FileMode.Open));
- }
- return m_currentCameraParamModel;
- }
- public void CameraParamInit()
- {
- ICamera m_camera = CameraManager.CurrentCamera;
- int id = m_camera.ResolutionId;
- // 分辨率
- if (id != m_currentCameraParamModel.parame.Resolution)
- {
- m_camera.ResolutionId = m_currentCameraParamModel.parame.Resolution;
- }
- //相机旋转
- var rotate = m_currentCameraParamModel.parame.Rotate;
- m_camera.Rotate = rotate;
- m_camera.SetROI(m_currentCameraParamModel.parame.previewRectX, m_currentCameraParamModel.parame.previewRectY, m_currentCameraParamModel.parame.previewRectW, m_currentCameraParamModel.parame.previewRectH);
- // 曝光
- int autoExposure = m_currentCameraParamModel.parame.ATExposure;
- if (autoExposure == 1)
- {
- m_camera.AutoExposure = 1;
- }
- else
- {
- m_camera.AutoExposure = 0;
- m_camera.ExposureTime = m_currentCameraParamModel.parame.LNExposure;
- }
- m_camera.Target = m_currentCameraParamModel.parame.Brightness;
- m_camera.Light = m_currentCameraParamModel.parame.Light;
- //白平衡
- int whiteBalance = m_currentCameraParamModel.parame.WhiteBalance;
- if (whiteBalance == 1)
- {
- // 自动白平衡
- m_camera.WhiteBalanceMode = 2;
- }
- else
- {
- // 手动白平衡
- m_camera.WhiteBalanceMode = 0;
- m_camera.RedGain = m_currentCameraParamModel.parame.RedChannel; //usec
- m_camera.GreenGain = m_currentCameraParamModel.parame.GreenChannel; //usec
- m_camera.BlueGain = m_currentCameraParamModel.parame.BlueChannel; //usec
- // 全局增益
- m_camera.Gain = m_currentCameraParamModel.parame.GlobalGain; //usec
- }
- // 色彩饱和度
- m_camera.Saturation = m_currentCameraParamModel.parame.Saturation; //usec
- // 相机模式
- int monochromatic = m_currentCameraParamModel.parame.Monochromatic;
- //锐化
- m_camera.Sharpness = m_currentCameraParamModel.parame.Sharpness;
- m_camera.HorizontalMirrored = m_currentCameraParamModel.parame.Horizontal == 1 ^ rotate == 2;
- m_camera.VerticalMirrored = m_currentCameraParamModel.parame.Vertical == 1 ^ rotate == 2;
- m_camera.GrayMode = monochromatic; //usec
- }
- /// <summary>
- /// 读取
- /// </summary>
- /// <returns></returns>
- public CameraParamModel GetCurrentCameraParamModel()
- {
- return GetCameraParamModel(m_currentConfigFileName);
- }
- public CameraParamModel GetDefaultCameraParamModel()
- {
- return GetCameraParamModel("CameraParam");
- }
- public void SetCameraParamModel(CameraParamModel cameraParam)
- {
- m_currentCameraParamModel = cameraParam;
- }
- /// <summary>
- /// 保存配置文件
- /// </summary>
- /// <param name="stageModelXml"></param>
- /// <param name="fileName"></param>
- public void Save(CameraParamModel cameraParamModel, string fileName)
- {
- string stageModelXml = XmlSerializeHelper.XmlSerialize<CameraParamModel>(cameraParamModel);
- string filePath = GetFileFullPath(fileName);
- FileOperationHelper.WriteStringToFile(stageModelXml, filePath, FileMode.Create);
- }
- /// <summary>
- /// 保存当前配置文件
- /// </summary>
- /// <param name="stageModelXml"></param>
- /// <param name="fileName"></param>
- public void Save()
- {
- Save(m_currentCameraParamModel, m_currentConfigFileName);
- }
- public void SaveAs(string fileName)
- {
- Save(m_currentCameraParamModel, fileName);
- }
- public void Delete(string name)
- {
- string fileFullPath = GetFileFullPath(name);
- System.IO.File.Delete(fileFullPath);
- }
- }
- }
|