CameraService.cs 2.6 KB

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