using MvCamCtrl.NET; using Prism.Commands; using Prism.Mvvm; using Prism.Services.Dialogs; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Security.Cryptography; using System.Windows; using TeamAAS_VP.Core; using TeamAAS_VP.Core.Cameras; using TeamAAS_VP.Enums; using TeamAAS_VP.Models; using TeamAAS_VP.Resources.Languages; namespace TeamAAS_VP.ViewModels.Setting { public class EditCameraViewModel : BindableBase, IDialogAware { private CameraInfo _Camera; /// /// 相机 /// public CameraInfo Camera { get { return _Camera; } set { SetProperty(ref _Camera, value); } } private ObservableCollection _CameraList = new ObservableCollection(); public ObservableCollection CameraList { get { return _CameraList; } set { SetProperty(ref _CameraList, value); } } private CameraInfo _SelectCamera; /// /// 选中的相机 /// public CameraInfo SelectCamera { get { return _SelectCamera; } set { SetProperty(ref _SelectCamera, value); try { if (value!=null && Camera != null) { Camera.SerialNumber = value.SerialNumber; Camera.Model = value.Model; Camera.ManufacturerName = value.ManufacturerName; Camera.CameraType = value.CameraType; Camera.CameraBrand = value.CameraBrand; Camera.CameraIp = value.CameraIp; Camera.IsFindByIp = value.IsFindByIp; } } catch (Exception) { } } } private DelegateCommand _ConfirmCommand; public DelegateCommand ConfirmCommand => _ConfirmCommand ?? (_ConfirmCommand = new DelegateCommand(ExecuteConfirmCommand)); void ExecuteConfirmCommand() { if (string.IsNullOrEmpty(Camera.CameraName)) { return; } if (!FileHelper.CheckFileName(Camera.CameraName)) { MessageBox.Show(Lang.AddCameraVM_message1, "AAS", MessageBoxButton.OK, MessageBoxImage.Error); return; } IDialogParameters parameters = new DialogParameters(); parameters.Add("Camera", Camera); Tuple rest = new Tuple(false, Camera); RequestClose?.Invoke(new DialogResult(ButtonResult.OK, parameters)); } private DelegateCommand _CancelCommand; public DelegateCommand CancelCommand => _CancelCommand ?? (_CancelCommand = new DelegateCommand(ExecuteCancelCommand)); void ExecuteCancelCommand() { IDialogParameters parameters = new DialogParameters(); parameters.Add("Camera", Camera); Tuple rest = new Tuple(false, Camera); RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel, parameters)); } public EditCameraViewModel() { } public string Title { get; set; } = "修改相机"; public event Action RequestClose; public bool CanCloseDialog() { return true; } public void OnDialogClosed() { } public void OnDialogOpened(IDialogParameters parameters) { var cameraBrand = parameters.GetValue("CameraBrand"); Title = Lang.SettingView_Camera_btnEditCamera; Camera = parameters.GetValue("Camera"); //GlobalCameraModuleTool globalCamera = new GlobalCameraModuleTool(); //CameraInfoList cameraInfoList = globalCamera.ModuParams.GetCameraInfoList(); CameraList.Clear(); CameraInfo[] cameras = null; if (cameraBrand == CameraBrand.HikRobot_MVS) { cameras = MvCamera.GetDevices(); } else if (cameraBrand == CameraBrand.Basler_Pylon) { cameras = BaslerCamera.GetDevices(); } else if (cameraBrand == CameraBrand.IRayple) { cameras = AHuaCamera.GetDevices(); } else if (cameraBrand == CameraBrand.Cognex) { cameras = CognexCamera.GetDevices(); } else if (cameraBrand == CameraBrand.Galaxy) { cameras = GalaxyCamera.GetDevices(); } CameraList.Clear(); if (cameras != null) { foreach (var camera in cameras) { CameraList.Add(camera); } } if (Camera.CameraBrand== cameraBrand) { SelectCamera = CameraList.FirstOrDefault(c => c.SerialNumber == Camera.SerialNumber); } } } }