AddCameraViewModel.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. using MvCamCtrl.NET;
  2. using Org.BouncyCastle.Asn1.Tsp;
  3. using Prism.Commands;
  4. using Prism.Mvvm;
  5. using Prism.Services.Dialogs;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Collections.ObjectModel;
  9. using System.IO;
  10. using System.Linq;
  11. using System.Security.Cryptography;
  12. using System.Windows;
  13. using TeamAAS_VP.Core;
  14. using TeamAAS_VP.Core.Cameras;
  15. using TeamAAS_VP.Enums;
  16. using TeamAAS_VP.Events;
  17. using TeamAAS_VP.Models;
  18. using TeamAAS_VP.Resources.Languages;
  19. namespace TeamAAS_VP.ViewModels.Setting
  20. {
  21. public class AddCameraViewModel : BindableBase, IDialogAware
  22. {
  23. private CameraInfo _Camera;
  24. /// <summary>
  25. /// 相机
  26. /// </summary>
  27. public CameraInfo Camera
  28. {
  29. get { return _Camera; }
  30. set { SetProperty(ref _Camera, value); }
  31. }
  32. private ObservableCollection<CameraInfo> _CameraList=new ObservableCollection<CameraInfo>();
  33. public ObservableCollection<CameraInfo> CameraList
  34. {
  35. get { return _CameraList; }
  36. set { SetProperty(ref _CameraList, value); }
  37. }
  38. private CameraInfo _SelectCamera;
  39. /// <summary>
  40. /// 选中的相机
  41. /// </summary>
  42. public CameraInfo SelectCamera
  43. {
  44. get { return _SelectCamera; }
  45. set { SetProperty(ref _SelectCamera, value);
  46. try
  47. {
  48. if (Camera != null)
  49. {
  50. Camera.SerialNumber = value.SerialNumber;
  51. Camera.Model = value.Model;
  52. Camera.ManufacturerName = value.ManufacturerName;
  53. Camera.CameraType = value.CameraType;
  54. Camera.CameraBrand = value.CameraBrand;
  55. Camera.CameraIp = value.CameraIp;
  56. Camera.IsFindByIp = value.IsFindByIp;
  57. }
  58. }
  59. catch (Exception)
  60. {
  61. }
  62. }
  63. }
  64. private bool CanConfirm
  65. {
  66. get
  67. {
  68. if (Camera != null && SelectCamera != null && !string.IsNullOrEmpty(Camera.CameraName) && !string.IsNullOrEmpty(Camera.SerialNumber) && !string.IsNullOrEmpty(Camera.Model))
  69. {
  70. return true;
  71. }
  72. else
  73. {
  74. return false;
  75. }
  76. }
  77. }
  78. private DelegateCommand _ConfirmCommand;
  79. public DelegateCommand ConfirmCommand =>
  80. _ConfirmCommand ?? (_ConfirmCommand = new DelegateCommand(ExecuteConfirmCommand).ObservesCanExecute(()=> CanConfirm).ObservesProperty(()=> Camera.CameraName).ObservesProperty(()=> SelectCamera));
  81. void ExecuteConfirmCommand()
  82. {
  83. if (string.IsNullOrEmpty(Camera.CameraName))
  84. {
  85. return;
  86. }
  87. if (!FileHelper.CheckFileName(Camera.CameraName))
  88. {
  89. MessageBox.Show(Lang.AddCameraVM_message1,"AAS",MessageBoxButton.OK,MessageBoxImage.Error);
  90. return;
  91. }
  92. IDialogParameters parameters = new DialogParameters();
  93. parameters.Add("Camera", Camera);
  94. Tuple<bool, CameraInfo> rest = new Tuple<bool, CameraInfo>(false, Camera);
  95. RequestClose?.Invoke(new DialogResult(ButtonResult.OK, parameters));
  96. }
  97. private DelegateCommand _CancelCommand;
  98. public DelegateCommand CancelCommand =>
  99. _CancelCommand ?? (_CancelCommand = new DelegateCommand(ExecuteCancelCommand));
  100. void ExecuteCancelCommand()
  101. {
  102. IDialogParameters parameters = new DialogParameters();
  103. parameters.Add("Camera", Camera);
  104. Tuple<bool, CameraInfo> rest = new Tuple<bool, CameraInfo>(false, Camera);
  105. RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel, parameters));
  106. }
  107. public AddCameraViewModel()
  108. {
  109. }
  110. public string Title { get; set; } = "Add Camera";
  111. public event Action<IDialogResult> RequestClose;
  112. public bool CanCloseDialog()
  113. {
  114. return true;
  115. }
  116. public void OnDialogClosed()
  117. {
  118. }
  119. public void OnDialogOpened(IDialogParameters parameters)
  120. {
  121. Title = Lang.SettingView_Camera_btnAddCamera;
  122. var cameraBrand = parameters.GetValue<CameraBrand>("CameraBrand");
  123. Camera = new CameraInfo() { Id = Guid.NewGuid() };
  124. CameraList.Clear();
  125. CameraInfo[] cameras=null;
  126. if (cameraBrand== CameraBrand.HikRobot_MVS)
  127. {
  128. cameras = MvCamera.GetDevices();
  129. }
  130. else if (cameraBrand == CameraBrand.Basler_Pylon)
  131. {
  132. cameras = BaslerCamera.GetDevices();
  133. }
  134. else if (cameraBrand == CameraBrand.IRayple)
  135. {
  136. cameras = AHuaCamera.GetDevices();
  137. }
  138. else if (cameraBrand == CameraBrand.Cognex)
  139. {
  140. cameras = CognexCamera.GetDevices();
  141. }
  142. else if (cameraBrand == CameraBrand.Galaxy)
  143. {
  144. cameras = GalaxyCamera.GetDevices();
  145. }
  146. else if (cameraBrand == CameraBrand.Opt)
  147. {
  148. cameras = OptCamera.GetDevices();
  149. }
  150. else if (cameraBrand == CameraBrand.SSZN)
  151. {
  152. cameras = SSZNCamera.GetDevices();
  153. }
  154. CameraList.Clear();
  155. if (cameras != null)
  156. {
  157. foreach (var camera in cameras)
  158. {
  159. CameraList.Add(camera);
  160. }
  161. }
  162. }
  163. }
  164. }