using CCDCount.DLL; using CCDCount.MODEL.ConfigModel; using CCDCount.MODEL.SqlDataModel; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Drawing.Text; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Media; using System.Windows.Media.Imaging; namespace CCDCountWpf { public class CameraCoboxItem { public string Name { get; set; } // 显示的名称 public string SNValue { get; set; } // 对应的编号 } public class ShowBindingClass : INotifyPropertyChanged { /// /// 累计数量 /// private string allActiveNum = "0"; public string AllActiveNum { get { return allActiveNum; } set { allActiveNum = value; OnPropertyChanged("AllActiveNum"); } } /// /// 累计OK /// private string allOkNum = "0"; public string AllOkNum { get { return allOkNum; } set { allOkNum = value; OnPropertyChanged("AllOkNum"); } } /// /// 累计NG /// private string allNgNum = "0"; public string AllNgNum { get { return allNgNum; } set { allNgNum = value; OnPropertyChanged("AllNgNum"); } } /// /// 数粒速度 /// private string shuLiSpeed = "0"; public string ShuLiSpeed { get { return shuLiSpeed; } set { shuLiSpeed = value; OnPropertyChanged("ShuLiSpeed"); } } /// /// 内存监控 /// private string ramMonitor = ""; public string RamMonitor { get { return ramMonitor; } set { ramMonitor = value; OnPropertyChanged("RamMonitor"); } } /// /// CPU监控 /// private string _CPUMonitor = ""; public string CPUMonitor { get { return _CPUMonitor; } set { _CPUMonitor = value; OnPropertyChanged("CPUMonitor"); } } /// /// 相机运行状态 /// private string camRunStatic = "未运行"; public string CamRunStatic { get { return camRunStatic; } set { camRunStatic = value; OnPropertyChanged("CamRunStatic"); } } /// /// 历史结果当前图像编号 /// private int historyImageNum = 1; public int HistoryImageNum { get { return historyImageNum; } set { historyImageNum = value; OnPropertyChanged("HistoryImageNum"); } } /// /// 历史结果图像数量 /// private int historyImageCount = 0; public int HistoryImageCount { get { return historyImageCount; } set { historyImageCount = value; OnPropertyChanged("HistoryImageCount"); } } /// /// 历史结果图像 /// private BitmapImage historyImage; public BitmapImage HistoryImage { get { return historyImage; } set { historyImage = value; OnPropertyChanged("HistoryImage"); } } /// /// 结果图像 /// private BitmapImage bitmapImage; public BitmapImage BitmapImage { get { return bitmapImage; } set { bitmapImage = value; OnPropertyChanged("BitmapImage"); } } /// /// 结果图像 /// private BitmapImage _DebugImage; public BitmapImage DebugImage { get { return _DebugImage; } set { _DebugImage = value; OnPropertyChanged("DebugImage"); } } // /// 缩略图1 /// private BitmapImage thumbnailImage1; public BitmapImage ThumbnailImage1 { get { return thumbnailImage1; } set { thumbnailImage1 = value; OnPropertyChanged("ThumbnailImage1"); } } // /// 缩略图2 /// private BitmapImage thumbnailImage2; public BitmapImage ThumbnailImage2 { get { return thumbnailImage2; } set { thumbnailImage2 = value; OnPropertyChanged("ThumbnailImage2"); } } // /// 缩略图3 /// private BitmapImage thumbnailImage3; public BitmapImage ThumbnailImage3 { get { return thumbnailImage3; } set { thumbnailImage3 = value; OnPropertyChanged("ThumbnailImage3"); } } // /// 缩略图4 /// private BitmapImage thumbnailImage4; public BitmapImage ThumbnailImage4 { get { return thumbnailImage4; } set { thumbnailImage4 = value; OnPropertyChanged("ThumbnailImage4"); } } /// /// 相机运行状态字体颜色 /// private SolidColorBrush cameraStaticColor = Brushes.Red; public SolidColorBrush CameraStaticColor { get { return cameraStaticColor; } set { cameraStaticColor = value; OnPropertyChanged("CameraStaticColor"); } } /// /// 配方名称 /// public string FormulationName { get { if (MessageBus.NowSettingLoadMainThread != null) { return MessageBus.NowSettingLoadMainThread.FormulationName; } return ""; } set { if (MessageBus.NowSettingLoadMainThread != null) { MessageBus.NowSettingLoadMainThread.FormulationName = value; MessageBus.NowSettingLoadMainThread.CameraConfigIsChange = true; OnPropertyChanged("FormulationName"); } } } /// /// 相机曝光时间 /// public string ExposureTimeValue { get { // 从MessageBus获取最新值(保证读取时同步) if (MessageBus.NowSettingLoadMainThread != null) { return MessageBus.NowSettingLoadMainThread.cameraConfig.ExposureTimeValue.ToString(); } return ""; } set { if (MessageBus.NowSettingLoadMainThread != null && float.TryParse(value, out float newValue)) { // 同步更新到MessageBus float oldValue = MessageBus.NowSettingLoadMainThread.cameraConfig.ExposureTimeValue; MessageBus.NowSettingLoadMainThread.cameraConfig.ExposureTimeValue = newValue; MessageBus.NowSettingLoadMainThread.CameraConfigIsChange = true; MessageBus.NowSettingLoadMainThread.ReLoadCameraConfig(); FaultLog.RecordValueChangeMessage($"相机{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum}的曝光时间已从{oldValue}修改为{newValue}"); OnPropertyChanged("ExposureTimeValue"); } } } /// /// 相机行频 /// public string AcquistionLineRate { get { if (MessageBus.NowSettingLoadMainThread != null) { return MessageBus.NowSettingLoadMainThread.cameraConfig.AcquistionLineRateValue.ToString(); } else { return ""; } } set { if (MessageBus.NowSettingLoadMainThread != null) { try { float oldValue = MessageBus.NowSettingLoadMainThread.cameraConfig.AcquistionLineRateValue; MessageBus.NowSettingLoadMainThread.cameraConfig.AcquistionLineRateValue = int.Parse(value); MessageBus.NowSettingLoadMainThread.CameraConfigIsChange = true; MessageBus.NowSettingLoadMainThread.ReLoadCameraConfig(); FaultLog.RecordValueChangeMessage($"相机{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum}的行频从{oldValue}修改为{value}"); OnPropertyChanged("AcquistionLineRate"); } catch (Exception) { Console.WriteLine("AcquistionLineRate-SetError"); } } } } /// /// 图像宽度 /// public string ImageWidth { get { if (MessageBus.NowSettingLoadMainThread != null) { return MessageBus.NowSettingLoadMainThread.cameraConfig.Width.ToString(); } else { return ""; } } set { if (MessageBus.NowSettingLoadMainThread != null) { try { int oldValue = MessageBus.NowSettingLoadMainThread.cameraConfig.Width; MessageBus.NowSettingLoadMainThread.cameraConfig.Width = int.Parse(value); MessageBus.NowSettingLoadMainThread.CameraConfigIsChange = true; MessageBus.NowSettingLoadMainThread.ReLoadCameraConfig(); FaultLog.RecordValueChangeMessage($"相机{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum}的图像宽从{oldValue}修改为{value}"); OnPropertyChanged("ImageWidth"); } catch (Exception) { Console.WriteLine("ImageWidth-SetError"); } } } } /// /// 相机名称(用户自定义) /// public string CamUserName { get { if (MessageBus.NowSettingLoadMainThread != null) { return MessageBus.NowSettingLoadMainThread.cameraConfig.CameraName; } else { return ""; } } set { if (MessageBus.NowSettingLoadMainThread != null) { try { string oldValue = MessageBus.NowSettingLoadMainThread.cameraConfig.CameraName == "" ? "null" : MessageBus.NowSettingLoadMainThread.cameraConfig.CameraName; MessageBus.NowSettingLoadMainThread.cameraConfig.CameraName = value; MessageBus.NowSettingLoadMainThread.CameraConfigIsChange = true; MessageBus.NowSettingLoadMainThread.ReLoadCameraConfig(); FaultLog.RecordValueChangeMessage($"相机{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum}的用户自定义名从{oldValue}修改为{value}"); OnPropertyChanged("CamUserName"); } catch (Exception) { Console.WriteLine("CamUserName-SetError"); } } } } /// /// 图像偏移X /// public string CamOffsetX { get { if (MessageBus.NowSettingLoadMainThread != null) { return MessageBus.NowSettingLoadMainThread.cameraConfig.OffsetX.ToString(); } else { return ""; } } set { if (MessageBus.NowSettingLoadMainThread != null) { try { int oldValue = MessageBus.NowSettingLoadMainThread.cameraConfig.OffsetX; MessageBus.NowSettingLoadMainThread.cameraConfig.OffsetX = int.Parse(value); MessageBus.NowSettingLoadMainThread.CameraConfigIsChange = true; MessageBus.NowSettingLoadMainThread.ReLoadCameraConfig(); FaultLog.RecordValueChangeMessage($"相机{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum}的图像X偏移从{oldValue}修改为{value}"); OnPropertyChanged("CamOffsetX"); } catch (Exception) { Console.WriteLine("CamOffsetX-SetError"); } } } } /// /// 相机列表 /// public ObservableCollection CameraItems { get; } = new ObservableCollection(); public ObservableCollection FormulationItems { get; } = new ObservableCollection(); /// /// 当前选择的相机SN /// public string CameraSNNum { get { if (MessageBus.NowSettingLoadMainThread != null) { return MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum.ToString(); } else { return ""; } } set { if (MessageBus.NowSettingLoadMainThread != null) { try { string oldValue = MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum; MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum = value; MessageBus.NowSettingLoadMainThread.shuLiConfig.CameraSN = value; MessageBus.NowSettingLoadMainThread.CameraConfigIsChange = true; FaultLog.RecordValueChangeMessage($"相机{MessageBus.NowSettingLoadMainThread.cameraConfig.CamerNo}的SN从{oldValue}修改为{value}"); OnPropertyChanged("CameraSNNum"); } catch (Exception) { Console.WriteLine("CameraSNNum-SetError"); } } } } /// /// 预处理阈值 /// public string RegionThreshold { get { if (MessageBus.NowSettingLoadMainThread != null) { return MessageBus.NowSettingLoadMainThread.shuLiConfig.RegionThreshold.ToString(); } else { return ""; } } set { if (MessageBus.NowSettingLoadMainThread != null) { try { int oldValue = MessageBus.NowSettingLoadMainThread.shuLiConfig.RegionThreshold; MessageBus.NowSettingLoadMainThread.shuLiConfig.RegionThreshold = int.Parse(value); FaultLog.RecordValueChangeMessage($"数粒识别{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum}的预处理阈值从{oldValue}修改为{value}"); OnPropertyChanged("RegionThreshold"); } catch (Exception) { Console.WriteLine("RegionThreshold-SetError"); } } } } /// /// 数粒通道数 /// public string Channel { get { if (MessageBus.NowSettingLoadMainThread != null) { return MessageBus.NowSettingLoadMainThread.shuLiConfig.Channel.ToString(); } else { return ""; } } set { if (MessageBus.NowSettingLoadMainThread != null) { try { int oldValue = MessageBus.NowSettingLoadMainThread.shuLiConfig.Channel; MessageBus.NowSettingLoadMainThread.shuLiConfig.Channel = int.Parse(value); FaultLog.RecordValueChangeMessage($"数粒识别{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum}的通道数从{oldValue}修改为{value}"); OnPropertyChanged("Channel"); } catch (Exception) { Console.WriteLine("Channel-SetError"); } } } } /// /// 噪声滤波阈值 /// public string NoiseFilter { get { if (MessageBus.NowSettingLoadMainThread != null) { return MessageBus.NowSettingLoadMainThread.shuLiConfig.NoiseFilter_Threshold.ToString(); } else { return ""; } } set { if (MessageBus.NowSettingLoadMainThread != null) { try { int oldValue = MessageBus.NowSettingLoadMainThread.shuLiConfig.NoiseFilter_Threshold; MessageBus.NowSettingLoadMainThread.shuLiConfig.NoiseFilter_Threshold = int.Parse(value); FaultLog.RecordValueChangeMessage($"数粒识别{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum}的噪声滤波阈值从{oldValue}修改为{value}"); OnPropertyChanged("NoiseFilter"); } catch (Exception) { Console.WriteLine("NoiseFilter-SetError"); } } } } /// /// 合格粒最小宽 /// public string MIN_OBJECT_WIDTH { get { if (MessageBus.NowSettingLoadMainThread != null) { return MessageBus.NowSettingLoadMainThread.shuLiConfig.MIN_OBJECT_WIDTH.ToString(); } else { return ""; } } set { if (MessageBus.NowSettingLoadMainThread != null) { try { int oldValue = MessageBus.NowSettingLoadMainThread.shuLiConfig.MIN_OBJECT_WIDTH; MessageBus.NowSettingLoadMainThread.shuLiConfig.MIN_OBJECT_WIDTH = int.Parse(value); FaultLog.RecordValueChangeMessage($"数粒识别{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum}的异常粒最小宽从{oldValue}修改为{value}"); OnPropertyChanged("MIN_OBJECT_WIDTH"); } catch (Exception) { Console.WriteLine("MIN_OBJECT_WIDTH-SetError"); } } } } /// /// 合格粒最大宽 /// public string MAX_OBJECT_WIDTH { get { if (MessageBus.NowSettingLoadMainThread != null) { return MessageBus.NowSettingLoadMainThread.shuLiConfig.MAX_OBJECT_WIDTH.ToString(); } else { return ""; } } set { if (MessageBus.NowSettingLoadMainThread != null) { try { int oldValue = MessageBus.NowSettingLoadMainThread.shuLiConfig.MAX_OBJECT_WIDTH; MessageBus.NowSettingLoadMainThread.shuLiConfig.MAX_OBJECT_WIDTH = int.Parse(value); FaultLog.RecordValueChangeMessage($"数粒识别{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum}的异常粒最大宽从{oldValue}修改为{value}"); OnPropertyChanged("MAX_OBJECT_WIDTH"); } catch (Exception) { Console.WriteLine("MAX_OBJECT_WIDTH-SetError"); } } } } /// /// 合格粒最小高 /// public string MIN_OBJECT_HEIGHT { get { if (MessageBus.NowSettingLoadMainThread != null) { return MessageBus.NowSettingLoadMainThread.shuLiConfig.MIN_OBJECT_HEIGHT.ToString(); } else { return ""; } } set { if (MessageBus.NowSettingLoadMainThread != null) { try { int oldValue = MessageBus.NowSettingLoadMainThread.shuLiConfig.MIN_OBJECT_HEIGHT; MessageBus.NowSettingLoadMainThread.shuLiConfig.MIN_OBJECT_HEIGHT = int.Parse(value); FaultLog.RecordValueChangeMessage($"数粒识别{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum}的异常粒最小高从{oldValue}修改为{value}"); OnPropertyChanged("MIN_OBJECT_HEIGHT"); } catch (Exception) { Console.WriteLine("MIN_OBJECT_HEIGHT-SetError"); } } } } /// /// 合格粒最大高 /// public string MAX_OBJECT_HEIGHT { get { if (MessageBus.NowSettingLoadMainThread != null) { return MessageBus.NowSettingLoadMainThread.shuLiConfig.MAX_OBJECT_HEIGHT.ToString(); } else { return ""; } } set { if (MessageBus.NowSettingLoadMainThread != null) { try { int oldValue = MessageBus.NowSettingLoadMainThread.shuLiConfig.MAX_OBJECT_HEIGHT; MessageBus.NowSettingLoadMainThread.shuLiConfig.MAX_OBJECT_HEIGHT = int.Parse(value); FaultLog.RecordValueChangeMessage($"数粒识别{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum}的异常粒最大高从{oldValue}修改为{value}"); OnPropertyChanged("MAX_OBJECT_HEIGHT"); } catch (Exception) { Console.WriteLine("MAX_OBJECT_HEIGHT-SetError"); } } } } /// /// 合格粒最长长度 /// public string MAX_OBJECT_LENGTH { get { if (MessageBus.NowSettingLoadMainThread != null) { return MessageBus.NowSettingLoadMainThread.shuLiConfig.MAX_Object_LENGTH.ToString(); } else { return ""; } } set { if (MessageBus.NowSettingLoadMainThread != null) { try { int oldValue = MessageBus.NowSettingLoadMainThread.shuLiConfig.MAX_Object_LENGTH; MessageBus.NowSettingLoadMainThread.shuLiConfig.MAX_Object_LENGTH = int.Parse(value); FaultLog.RecordValueChangeMessage($"数粒识别{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum}的合格粒最长长度从{oldValue}修改为{value}"); OnPropertyChanged("MAX_Object_LENGTH"); } catch (Exception) { Console.WriteLine("MAX_Object_LENGTH-SetError"); } } } } /// /// 合格粒最短长度 /// public string MIN_OBJECT_LENGTH { get { if (MessageBus.NowSettingLoadMainThread != null) { return MessageBus.NowSettingLoadMainThread.shuLiConfig.MIN_Object_LENGTH.ToString(); } else { return ""; } } set { if (MessageBus.NowSettingLoadMainThread != null) { try { int oldValue = MessageBus.NowSettingLoadMainThread.shuLiConfig.MIN_Object_LENGTH; MessageBus.NowSettingLoadMainThread.shuLiConfig.MIN_Object_LENGTH = int.Parse(value); FaultLog.RecordValueChangeMessage($"数粒识别{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum}的合格粒的最短长度从{oldValue}修改为{value}"); OnPropertyChanged("MIN_Object_LENGTH"); } catch (Exception) { Console.WriteLine("MIN_Object_LENGTH-SetError"); } } } } /// /// 合格粒最小面积 /// public string MinArea { get { if (MessageBus.NowSettingLoadMainThread != null) { return MessageBus.NowSettingLoadMainThread.shuLiConfig.MinArea.ToString(); } else { return ""; } } set { if (MessageBus.NowSettingLoadMainThread != null) { try { int oldValue = MessageBus.NowSettingLoadMainThread.shuLiConfig.MinArea; MessageBus.NowSettingLoadMainThread.shuLiConfig.MinArea = int.Parse(value); FaultLog.RecordValueChangeMessage($"数粒识别{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum}的异常粒最小面积从{oldValue}修改为{value}"); OnPropertyChanged("MinArea"); } catch (Exception) { Console.WriteLine("MinArea-SetError"); } } } } /// /// 合格粒最大面积 /// public string MaxArea { get { if (MessageBus.NowSettingLoadMainThread != null) { return MessageBus.NowSettingLoadMainThread.shuLiConfig.MaxArea.ToString(); } else { return ""; } } set { if (MessageBus.NowSettingLoadMainThread != null) { try { int oldValue = MessageBus.NowSettingLoadMainThread.shuLiConfig.MaxArea; MessageBus.NowSettingLoadMainThread.shuLiConfig.MaxArea = int.Parse(value); FaultLog.RecordValueChangeMessage($"数粒识别{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum}的异常粒最大面积从{oldValue}修改为{value}"); OnPropertyChanged("MaxArea"); } catch (Exception) { Console.WriteLine("MaxArea-SetError"); } } } } /// /// 异常粒识别码 /// public string PandingCode { get { if (MessageBus.NowSettingLoadMainThread != null) { return MessageBus.NowSettingLoadMainThread.shuLiConfig.MaxArea.ToString(); } else { return ""; } } set { if (MessageBus.NowSettingLoadMainThread != null) { try { int oldValue = MessageBus.NowSettingLoadMainThread.shuLiConfig.PandingCode; if(oldValue != int.Parse(value)) { MessageBus.NowSettingLoadMainThread.shuLiConfig.PandingCode = int.Parse(value); FaultLog.RecordValueChangeMessage($"数粒识别{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum}的判断标准识别码从{oldValue}修改为{value}"); } OnPropertyChanged("PandingCode"); } catch (Exception) { Console.WriteLine("PandingCode-SetError"); } } } } /// /// 错误信息列表 /// private List errMessageList = new List(); public List ErrMessageShowList { get { return errMessageList; } set { errMessageList = value; OnPropertyChanged("errMessageList"); } } private string showErrMessage = ""; public string ShowErrMessage { get { return showErrMessage; } set { showErrMessage = value; OnPropertyChanged("showErrMessage"); } } /// /// 用户数据信息列表 /// private List userMesDataModels = new List(); public List UserMesDataModels { get { return userMesDataModels; } set { userMesDataModels = value; OnPropertyChanged("userMesDataModels"); } } //数据绑定核心实现 public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } }