camera.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  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. return {
  59. status:-1,
  60. msg:"相机未连接,请链接相机。",
  61. }
  62. }
  63. } catch (error) {
  64. let msg = '请安装digiCamControl软件,并打开digiCamControl软件的web服务,端口为5513'
  65. if(readConfigFile().controlType === 'SmartShooter') msg = '请安装SmartShooter5软件'
  66. return {
  67. status:-1,
  68. msg,
  69. }
  70. }
  71. }
  72. /**
  73. * 启动预览
  74. */
  75. async liveShow() {
  76. try {
  77. await liveShow();
  78. if(readConfigFile().controlType === 'digiCamControl'){
  79. await CMD('All_Minimize')
  80. }
  81. return true;
  82. } catch (error) {
  83. console.error('eeee启动直播失败:', error);
  84. throw error;
  85. }
  86. }
  87. /**
  88. * 结束预览
  89. */
  90. async liveHide() {
  91. try {
  92. await liveHide();
  93. return true;
  94. } catch (error) {
  95. throw error;
  96. }
  97. }
  98. /**
  99. * 设置参数
  100. */
  101. async setParams(params) {
  102. try {
  103. console.log(params);
  104. await setParams(params);
  105. return true;
  106. } catch (error) {
  107. throw error;
  108. }
  109. }
  110. async takePictures(isLive=true) {
  111. try {
  112. if(isLive){
  113. await captureLive();
  114. }else{
  115. await capture();
  116. }
  117. return true;
  118. } catch (error) {
  119. throw error;
  120. }
  121. }
  122. // 示例:使用 fetchData 函数进行 HTTP 请求
  123. async fetchExampleData() {
  124. const options = {
  125. hostname: 'example.com',
  126. port: 443,
  127. path: '/api/data',
  128. method: 'GET'
  129. };
  130. try {
  131. const data = await fetchData(options);
  132. console.log('Fetched data:', data);
  133. return data;
  134. } catch (error) {
  135. console.error('Fetch data failed:', error);
  136. throw error;
  137. }
  138. }
  139. }
  140. CameraController.toString = () => '[class CameraController]';
  141. module.exports = CameraController;