123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 |
- 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 TUCAMAPI;
- using TUCamera;
- 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 CameraConfigs GetInstance()
- {
- if (m_cameraConfig == null)
- {
- m_cameraConfig = new CameraConfigs();
- if (m_cameraConfig.m_currentConfigFileName == null)
- {
- 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()
- {
- TUCamera.TUCamera m_camera = TUCameraManager.GetInstance().GetCurrentCamera();
- int id = m_camera.GetResolutionId();
- // 分辨率
- if (id != m_currentCameraParamModel.parame.Resolution)
- {
- m_camera.SetResolution(m_currentCameraParamModel.parame.Resolution);
- }
- //相机旋转
- var rotate = m_currentCameraParamModel.parame.Rotate;
- if (rotate == 0 || rotate == 2)
- m_camera.CancelRotate();
- if (rotate == 1)
- {
- m_camera.SetRotateL90();
- }
- if (rotate == 3)
- {
- m_camera.SetRotateR90();
- }
- m_camera.SetROI(ref m_currentCameraParamModel.parame.previewRectX, ref m_currentCameraParamModel.parame.previewRectY, ref m_currentCameraParamModel.parame.previewRectW, ref m_currentCameraParamModel.parame.previewRectH);
- // 曝光
- int autoExposure = m_currentCameraParamModel.parame.ATExposure;
- if (autoExposure == 1)
- {
- m_camera.SetExposureMode(ExposureMode.AUTO);
- m_camera.Light = m_currentCameraParamModel.parame.Light;
- }
- else
- {
- m_camera.SetExposureMode(ExposureMode.MANUAL);
- }
- //白平衡
- int whiteBalance = m_currentCameraParamModel.parame.WhiteBalance;
- if (whiteBalance == 1)
- {
- // 自动白平衡
- m_camera.SetWhiteBalanceMode(WhiteBalanceMode.AUTO);
- }
- else
- {
- // 手动白平衡
- m_camera.SetWhiteBalanceMode(WhiteBalanceMode.MANUAL);
- if (m_currentCameraParamModel.parame.FMExposure == 1)
- {
- m_camera.SetColorTemperatureByString("3200K");
- }
- else if (m_currentCameraParamModel.parame.FMExposure == 2)
- {
- m_camera.SetColorTemperatureByString("5500K");
- }
- else
- {
- m_camera.SetRedGain(m_currentCameraParamModel.parame.RedChannel); //usec
- m_camera.SetGreeGain(m_currentCameraParamModel.parame.GreenChannel); //usec
- m_camera.SetBlueGain(m_currentCameraParamModel.parame.BlueChannel); //usec
- }
- // 全局增益
- m_camera.SetGlobalGain(m_currentCameraParamModel.parame.GlobalGain); //usec
- }
- // 色彩饱和度
- m_camera.SetSaturation(m_currentCameraParamModel.parame.Saturation); //usec
- // 相机模式
- int monochromatic = m_currentCameraParamModel.parame.Monochromatic;
- if (monochromatic == 1)
- {
- m_camera.SetCameraMode(CameraMode.BLACK_WHILE); //usec
- }
- else
- {
- m_camera.SetCameraMode(CameraMode.COLOR); //usec
- }
- //锐化
- m_camera.SetSharpness(m_currentCameraParamModel.parame.Sharpness);
- m_camera.HorizontalMirrored = m_currentCameraParamModel.parame.Horizontal == 1 ^ rotate == 2;
- m_camera.VerticalMirrored = m_currentCameraParamModel.parame.Vertical == 1 ^ rotate == 2;
- }
- /// <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(CameraParamModel cameraParamModel)
- {
- string stageModelXml = XmlSerializeHelper.XmlSerialize<CameraParamModel>(cameraParamModel);
- string filePath = GetFileFullPath(m_currentConfigFileName);
- FileOperationHelper.WriteStringToFile(stageModelXml, filePath, FileMode.Create);
- }
- public void Delete()
- {
- string fileFullPath = GetFileFullPath(m_currentConfigFileName);
- System.IO.File.Delete(fileFullPath);
- }
- }
- }
|