CameraService.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. using LampInspectionMachine.Cameralibs.HKCamera;
  2. using LampInspectionMachine.Cameralibs.OPTCamera;
  3. using LampInspectionMachine.Interfaces;
  4. using LampInspectionMachine.Model;
  5. using MvCamCtrl.NET;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using System.Runtime.InteropServices;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. namespace LampInspectionMachine.Cameralibs
  13. {
  14. public class CameraService
  15. {
  16. private readonly Dictionary<Guid, ICamera> _CameraCollection;
  17. public CameraService()
  18. {
  19. _CameraCollection = new Dictionary<Guid, ICamera>();
  20. }
  21. public bool CreateCamera(Guid id ,CameraInfo cameraInfo)
  22. {
  23. cameraInfo.CameraBrand = CameraBrand.SciCamera_Opt;
  24. ICamera camera = null;
  25. switch (cameraInfo.CameraBrand)
  26. {
  27. case CameraBrand.HikRobot_MVS:
  28. camera = new MvCamera(id, cameraInfo.CameraName, cameraInfo.SerialNumber);
  29. break;
  30. case CameraBrand.Basler_Pylon:
  31. break;
  32. case CameraBrand.SciCamera_Opt:
  33. camera = new MVOptCamera(id, cameraInfo.CameraName, cameraInfo.SerialNumber);
  34. break;
  35. default:
  36. break;
  37. }
  38. if ( _CameraCollection.ContainsKey(id) )
  39. {
  40. var currenCamera = _CameraCollection[id];
  41. currenCamera.CloseDevice();
  42. }
  43. else
  44. {
  45. _CameraCollection.Add(id, camera);
  46. }
  47. return true;
  48. }
  49. public Task<bool> CreateCameraAsync(Guid id, CameraInfo cameraInfo)
  50. {
  51. ICamera camera= new MvCamera(id, cameraInfo.CameraName, cameraInfo.SerialNumber);
  52. if ( _CameraCollection.ContainsKey(id) )
  53. {
  54. var currenCamera = _CameraCollection[id];
  55. currenCamera.CloseDevice();
  56. }
  57. else
  58. {
  59. _CameraCollection.Add(id, camera);
  60. }
  61. return Task.FromResult(true);
  62. }
  63. public ICamera GetCamera(Guid id)
  64. {
  65. return _CameraCollection[ id ];
  66. }
  67. public Task<ICamera> GetCameraAsync(Guid id)
  68. {
  69. return Task.FromResult(_CameraCollection[ id ]);
  70. }
  71. public void UnRegisterCamera(Guid id)
  72. {
  73. if ( _CameraCollection.ContainsKey(id) )
  74. {
  75. var camera = _CameraCollection[id];
  76. camera.CloseDevice();
  77. }
  78. }
  79. public Task UnRegisterCameraAsync(Guid id)
  80. {
  81. if ( _CameraCollection.ContainsKey(id) )
  82. {
  83. var camera = _CameraCollection[id];
  84. camera.CloseDevice();
  85. }
  86. return Task.CompletedTask;
  87. }
  88. public void Dispose()
  89. {
  90. foreach ( var camera in _CameraCollection )
  91. {
  92. try
  93. {
  94. camera.Value.CloseDevice();
  95. }
  96. catch ( Exception )
  97. {
  98. }
  99. }
  100. }
  101. }
  102. }