using MvCamCtrl.NET; using Org.BouncyCastle.Asn1.Tsp; using Prism.Commands; using Prism.Mvvm; using Prism.Services.Dialogs; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; 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.Events; using TeamAAS_VP.Models; using TeamAAS_VP.Resources.Languages; namespace TeamAAS_VP.ViewModels.Setting { public class AddCameraViewModel : 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 (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 bool CanConfirm { get { if (Camera != null && SelectCamera != null && !string.IsNullOrEmpty(Camera.CameraName) && !string.IsNullOrEmpty(Camera.SerialNumber) && !string.IsNullOrEmpty(Camera.Model)) { return true; } else { return false; } } } private DelegateCommand _ConfirmCommand; public DelegateCommand ConfirmCommand => _ConfirmCommand ?? (_ConfirmCommand = new DelegateCommand(ExecuteConfirmCommand).ObservesCanExecute(()=> CanConfirm).ObservesProperty(()=> Camera.CameraName).ObservesProperty(()=> SelectCamera)); 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 AddCameraViewModel() { } public string Title { get; set; } = "Add Camera"; public event Action RequestClose; public bool CanCloseDialog() { return true; } public void OnDialogClosed() { } public void OnDialogOpened(IDialogParameters parameters) { Title = Lang.SettingView_Camera_btnAddCamera; var cameraBrand = parameters.GetValue("CameraBrand"); Camera = new CameraInfo() { Id = Guid.NewGuid() }; 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(); } else if (cameraBrand == CameraBrand.Opt) { cameras = OptCamera.GetDevices(); } CameraList.Clear(); if (cameras != null) { foreach (var camera in cameras) { CameraList.Add(camera); } } } } }