using SHJX.Service.Common.Logging; using Microsoft.Extensions.Logging; using SHJX.Service.Common.ReadXML; namespace shjxCamera { public class CreatCamera { private static readonly ILogger logger = SHJX.Service.Common.Logging.LogFactory.BuildLogger(typeof(CreatCamera)); private static ReadConfigUtil _config =ReadConfigUtil.Instance; /// /// 摄像头 /// public WebCamera WebCam { get; set; } /// /// 是否检测到摄像头 /// public static bool HadWebcams { get; set; } /// /// CreatCamera实例 /// private static CreatCamera _camera; /// /// 锁 /// private static readonly object obj_lock = new(); /// /// 摄像头传感器名称 /// /// "USB CAMERA" /// "Integrated Camera" private readonly string CamSensorName = _config.LogiCamera1Name;//"Logitech HD Webcam C270";//"Logi C270 HD WebCam";// /// /// 初始化 /// /// public CreatCamera() { TitrationSettings.SensorPara = new SensorsParameter(); string camName = ""; HadWebcams = false; for (int i = 0; i < WebCamera.GetCameras().Count; i++) { // 部分型号摄像头名称包含特殊符号,难以输入,故修改为名称关键词识别匹配,且兼容之前版本 if (!WebCamera.GetCameraName(i).ToLower().Contains(CamSensorName.ToLower())) { continue; } WebCam = null; WebCam = new WebCamera(WebCamera.GetCameraMoniker(i)); camName = WebCam.VidCapDevice.Source.Split('&')[3]; logger.LogInformation("相机1编号为" + camName + ",请配写入配置文件中"); if (_config.LogiCamera1.Equals(camName)) { HadWebcams = true; break; } } if (!HadWebcams) { logger.LogError("未找到摄像头1!"); } else { logger.LogDebug($"找到摄像头1!"); } } /// /// 默认值 /// public static CreatCamera Instance { get { lock (obj_lock) { if (_camera is null) { _camera = new CreatCamera(); } return _camera; } } } } }