camera.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. // electron/utils/readConfig.js
  2. const path = require('path');
  3. const fs = require('fs');
  4. const Log = require('ee-core/log');
  5. const { spawn } = require('child_process');
  6. const { liveShow, liveHide, setParams, capture, getParams,CMD,captureLive,closeOtherWindow,minimizeSmartShooter } = require('../api/camera');
  7. const { dialog } = require('electron'); // 引入 electron 的 dialog 模块
  8. const { windowManager } = require('node-window-manager');
  9. const CoreWindow = require("ee-core/electron/window");
  10. const { readConfigFile, writeConfigFile } = require('../utils/config');
  11. const exe = {
  12. "digiCamControl":"CameraControl.exe",
  13. "SmartShooter":"SmartShooter5.exe",
  14. }
  15. function getExePath () {
  16. let exePath = ""
  17. if(readConfigFile().controlType === 'digiCamControl'){
  18. exePath = path.join( readConfigFile().controlPath || readConfigFile().digiCamControlPath, exe["digiCamControl"]);
  19. }else if(readConfigFile().controlType === 'SmartShooter'){
  20. exePath = path.join( readConfigFile().controlPath || readConfigFile().SmartShooterPath, exe["SmartShooter"]);
  21. }
  22. console.log('ex============ePath');
  23. console.log(exePath);
  24. return exePath
  25. }
  26. async function checkCameraControlCmdExists() {
  27. try {
  28. // 拼接 CameraControlCmd.exe 的完整路径
  29. let exePath = getExePath()
  30. // 检查文件是否存在
  31. const exists = await fs.promises.access(exePath, fs.constants.F_OK)
  32. .then(() => true)
  33. .catch(() => false);
  34. if (!exists) {
  35. // 弹出文件夹选择对话框
  36. const { canceled, filePaths } = await dialog.showOpenDialog({
  37. title: '选择 相机控制安装软件 文件夹',
  38. properties: ['openDirectory']
  39. });
  40. if (!canceled && filePaths.length > 0) {
  41. const selectedPath = filePaths[0];
  42. // Check if SmartShooter5.exe exists in the selected directory
  43. const hasExe = path.join(selectedPath, exe["SmartShooter"]);
  44. if (fs.existsSync(hasExe)) {
  45. writeConfigFile("controlType","SmartShooter")
  46. }else{
  47. writeConfigFile("controlType","digiCamControl")
  48. }
  49. writeConfigFile("controlPath",selectedPath)
  50. } else {
  51. console.error('用户未选择文件夹');
  52. return {
  53. status:-1,
  54. msg:"无法找到 CameraControlCmd.exe 或者 SmartShooter5.exe",
  55. }
  56. }
  57. }
  58. const res = await openCameraControlCmd();
  59. // 如果是SmartShooter,启动后最小化窗口
  60. if(readConfigFile().controlType === 'SmartShooter'){
  61. // 等待软件启动完成
  62. setTimeout(async () => {
  63. try {
  64. await minimizeSmartShooter();
  65. } catch (error) {
  66. console.log('最小化SmartShooter失败:', error);
  67. }
  68. }, 3000); // 等待3秒让软件完全启动
  69. }
  70. return res;
  71. } catch (error) {
  72. Log.error('检查 第三方相机控制器 是否存在时出错:', error);
  73. throw error;
  74. }
  75. }
  76. async function openCameraControlCmd(digiCamControlPath) {
  77. return new Promise(async (resolve, reject) => {
  78. try {
  79. // 获取 digiCamControl 文件夹路径
  80. // 拼接 CameraControlCmd.exe 的完整路径
  81. let exePath = getExePath()
  82. // 检查文件是否存在
  83. await fs.promises.access(exePath, fs.constants.F_OK);
  84. try {
  85. const child = spawn(exePath);
  86. child.stdout.on('data', (data) => {
  87. resolve(true)
  88. });
  89. child.on('close', (code) => {
  90. if (code === 0) {
  91. reject(false)
  92. }
  93. });
  94. } catch (error) {
  95. Log.error('error 第三方相机控制器:', error);
  96. throw error;
  97. }
  98. } catch (error) {
  99. Log.error('无法找到或运行 第三方相机控制器:', error);
  100. throw error;
  101. }
  102. })
  103. }
  104. async function closeCameraControlTips() {
  105. try {
  106. await closeOtherWindow()
  107. }catch (e) {
  108. console.log(e)
  109. }
  110. }
  111. module.exports = {
  112. checkCameraControlCmdExists,
  113. closeCameraControlTips,
  114. minimizeSmartShooter
  115. };