camera.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. 'use strict';
  2. const { Controller } = require('ee-core');
  3. const Log = require('ee-core/log');
  4. const { checkCameraControlCmdExists, closeCameraControlTips} = require('../utils/camera');
  5. const {
  6. checkCamera,
  7. liveShow, liveHide, setParams, capture, getParams,CMD,captureLive,closeOtherWindow } = require('../api/camera');
  8. const { readConfigFile } = require('../utils/config');
  9. let isOPen = true
  10. class CameraController extends Controller {
  11. constructor(ctx) {
  12. super(ctx);
  13. }
  14. async connect() {
  15. try {
  16. console.log('==================');
  17. console.log(readConfigFile());
  18. if(readConfigFile().controlType === 'digiCamControl'){
  19. console.log('========1==========');
  20. await getParams('iso').catch(e=>{
  21. isOPen = false;
  22. })
  23. if(!isOPen){
  24. await checkCameraControlCmdExists()
  25. await CMD('All_Minimize')
  26. await closeCameraControlTips()
  27. isOPen = true
  28. }
  29. const res = await getParams('iso')
  30. if(res === '未将对象引用设置到对象的实例。'){
  31. return {
  32. status:-1,
  33. msg:"相机未连接,请链接相机。",
  34. }
  35. }
  36. return {
  37. status:2,
  38. msg:res,
  39. }
  40. }else{
  41. let res = await checkCamera().catch(e=>{
  42. isOPen = false;
  43. })
  44. if(res?.device_status === -1 ){
  45. isOPen = false;
  46. await checkCameraControlCmdExists()
  47. isOPen = true
  48. await new Promise(resolve => setTimeout(resolve, 10000)); // 等待5秒
  49. res = await checkCamera()
  50. }
  51. if(res?.device_status === 2){
  52. isOPen = true;
  53. return {
  54. ...res,
  55. status:2
  56. };
  57. }
  58. }
  59. } catch (error) {
  60. let msg = '请安装digiCamControl软件,并打开digiCamControl软件的web服务,端口为5513'
  61. if(readConfigFile().controlType === 'SmartShooter') msg = '请安装SmartShooter5软件'
  62. return {
  63. status:-1,
  64. msg,
  65. }
  66. }
  67. }
  68. /**
  69. * 启动预览
  70. */
  71. async liveShow() {
  72. try {
  73. await liveShow();
  74. if(readConfigFile().controlType === 'digiCamControl'){
  75. await CMD('All_Minimize')
  76. }
  77. return true;
  78. } catch (error) {
  79. console.error('eeee启动直播失败:', error);
  80. throw error;
  81. }
  82. }
  83. /**
  84. * 结束预览
  85. */
  86. async liveHide() {
  87. try {
  88. await liveHide();
  89. return true;
  90. } catch (error) {
  91. throw error;
  92. }
  93. }
  94. /**
  95. * 设置参数
  96. */
  97. async setParams(params) {
  98. try {
  99. console.log(params);
  100. await setParams(params);
  101. return true;
  102. } catch (error) {
  103. throw error;
  104. }
  105. }
  106. async takePictures(isLive=true) {
  107. try {
  108. if(isLive){
  109. await captureLive();
  110. }else{
  111. await capture();
  112. }
  113. return true;
  114. } catch (error) {
  115. throw error;
  116. }
  117. }
  118. // 示例:使用 fetchData 函数进行 HTTP 请求
  119. async fetchExampleData() {
  120. const options = {
  121. hostname: 'example.com',
  122. port: 443,
  123. path: '/api/data',
  124. method: 'GET'
  125. };
  126. try {
  127. const data = await fetchData(options);
  128. console.log('Fetched data:', data);
  129. return data;
  130. } catch (error) {
  131. console.error('Fetch data failed:', error);
  132. throw error;
  133. }
  134. }
  135. }
  136. CameraController.toString = () => '[class CameraController]';
  137. module.exports = CameraController;