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));
}
}
}