| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Runtime.CompilerServices;
- using TeamAAS.Camera.Enums;
- namespace TeamAAS.Camera.Models
- {
- /// <summary>
- /// 相机设备注册信息:仅承担设备发现(搜索列表)、UI 列表展示与配置持久化(Cameras.json)。
- /// 相机的可编辑参数(曝光/增益/Gamma)不放在本类——属性编辑器直接绑定 ICamera 实例
- /// (见 CameraBase),公共参数在接口/基类上,品牌特有参数在子类上自动带出;
- /// 本类的 ExposureTime/Gain/Gamma 仅作为启动时下发的持久化快照(null = 使用相机默认值)。
- /// </summary>
- public class CameraInfo : INotifyPropertyChanged
- {
- [Browsable(false)]
- public Guid Id { get; set; }
- [Category("基本"), DisplayName("编号")]
- public int CameraNo { get; set; }
- [Category("基本"), DisplayName("名称")]
- public string CameraName { get; set; }
- [Category("只读信息"), DisplayName("型号"), ReadOnly(true)]
- public string Model { get; set; }
- [Category("只读信息"), DisplayName("序列号"), ReadOnly(true)]
- public string SerialNumber { get; set; }
- [Category("只读信息"), DisplayName("厂商"), ReadOnly(true)]
- public string ManufacturerName { get; set; }
- [Browsable(false)]
- public CameraType CameraType { get; set; }
- [Category("只读信息"), DisplayName("品牌"), ReadOnly(true)]
- public string CameraBrand { get; set; }
- [Category("网络"), DisplayName("IP地址")]
- public string CameraIp { get; set; }
- [Category("网络"), DisplayName("通过IP查找")]
- public bool IsFindByIp { get; set; }
- [Browsable(false)]
- public bool IsConnected { get; set; }
- [Browsable(false)]
- public bool IsGrabbing { get; set; }
- // ===== 参数持久化快照(由 CameraManager 从 ICamera 实例回写;null 表示不改用默认值) =====
- [Browsable(false)]
- public float? ExposureTime { get; set; }
- [Browsable(false)]
- public float? Gain { get; set; }
- [Browsable(false)]
- public float? Gamma { get; set; }
- public CameraInfo()
- {
- Id = Guid.NewGuid();
- }
- public CameraInfo(Guid id, string cameraName, CameraType cameraType, string cameraBrand, string cameraIp)
- {
- Id = id;
- CameraName = cameraName;
- CameraType = cameraType;
- CameraBrand = cameraBrand;
- CameraIp = cameraIp;
- if (cameraType == CameraType.GIGE)
- {
- IsFindByIp = true;
- }
- }
- [Browsable(false)]
- public string CameraBrandDisplay => CameraManager.Instance.GetBrandDisplayName(CameraBrand);
- public CameraInfo Copy()
- {
- return new CameraInfo
- {
- Id = this.Id,
- CameraName = this.CameraName,
- Model = this.Model,
- SerialNumber = this.SerialNumber,
- ManufacturerName = this.ManufacturerName,
- CameraType = this.CameraType,
- CameraBrand = this.CameraBrand,
- CameraIp = this.CameraIp,
- CameraNo = this.CameraNo,
- IsFindByIp = this.IsFindByIp,
- IsConnected = this.IsConnected,
- IsGrabbing = this.IsGrabbing,
- ExposureTime = this.ExposureTime,
- Gain = this.Gain,
- Gamma = this.Gamma
- };
- }
- #region INotifyPropertyChanged
- public event PropertyChangedEventHandler PropertyChanged;
- protected virtual bool SetProperty<T>(ref T storage, T value, [CallerMemberName] string propertyName = null)
- {
- if (EqualityComparer<T>.Default.Equals(storage, value)) return false;
- storage = value;
- PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
- return true;
- }
- #endregion
- }
- }
|