camera.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. const axios = require('axios');
  2. const http = require('http');
  3. const { net } = require('electron');
  4. const { post, get: requestGet } = require('./request')
  5. const { spawn, exec } = require('child_process');
  6. //
  7. const baseURL = 'http://localhost:5513/';
  8. // 创建 Axios 实例
  9. const service = axios.create({
  10. baseURL:baseURL,
  11. timeout: 60000,
  12. });
  13. // 封装 GET 方法
  14. function get(config = { url: '' }) {
  15. return service.get(config.url, {
  16. insecureHTTPParser: true,
  17. timeout: config.timeout || 60000,
  18. });
  19. }
  20. async function fetchExampleData(url) {
  21. return new Promise((resolve, reject) => {
  22. const request = net.request({
  23. method: 'GET',
  24. url: baseURL+url
  25. });
  26. request.on('response', (response) => {
  27. let data = '';
  28. response.on('data', (chunk) => {
  29. data += chunk;
  30. });
  31. response.on('end', () => {
  32. try {
  33. resolve(data);
  34. } catch (error) {
  35. console.error('Error parsing data:', error);
  36. reject(error);
  37. }
  38. });
  39. });
  40. request.on('error', (error) => {
  41. console.error('Request error:', error);
  42. reject(error);
  43. });
  44. request.end();
  45. });
  46. }
  47. const socket = require('../utils/socket')
  48. const pySocket = new socket()
  49. const { readConfigFile } = require('../utils/config');
  50. module.exports = {
  51. async liveShow(point_name = 'A'){
  52. if(readConfigFile().controlType === 'digiCamControl'){
  53. return get({
  54. url: '?CMD=LiveViewWnd_Show'
  55. })
  56. }else{
  57. await pySocket.sendMessage(JSON.stringify({
  58. type: 'smart_shooter_enable_preview',
  59. data:{
  60. value:true,
  61. point_name: point_name
  62. }
  63. }))
  64. console.log('smart_shooter_enable_preview1111111111')
  65. return new Promise(async (resolve, reject) => {
  66. pySocket.onSocketMessage('smart_shooter_enable_preview_status',(message)=>{
  67. console.log('smart_shooter_enable_preview_status'+message)
  68. resolve(message)
  69. })
  70. })
  71. }
  72. },
  73. async liveHide(point_name = 'A'){
  74. if(readConfigFile().controlType === 'digiCamControl'){
  75. return get({
  76. url: '?CMD=LiveViewWnd_Hide'
  77. })
  78. }else{
  79. await pySocket.sendMessage(JSON.stringify({
  80. type: 'smart_shooter_enable_preview',
  81. data:{
  82. value:false,
  83. point_name: point_name
  84. }
  85. }))
  86. console.log('smart_shooter_enable_preview2222')
  87. return new Promise(async (resolve, reject) => {
  88. pySocket.onSocketMessage('smart_shooter_enable_preview_status',(message)=>{
  89. console.log('smart_shooter_enable_preview_status'+message)
  90. resolve(message)
  91. })
  92. })
  93. }
  94. },
  95. captureLive(){
  96. return get({
  97. url: '?CMD=LiveView_Capture'
  98. })
  99. },
  100. capture(){
  101. return get({
  102. url: '?CMD=Capture'
  103. })
  104. },
  105. CMD(cmd){
  106. return get({
  107. url: '?CMD='+cmd
  108. })
  109. },
  110. getParams(params){
  111. return fetchExampleData(`?slc=get&param1=${params}`)
  112. },
  113. setParams(params){
  114. return get({
  115. url: `?slc=set&param1=${params.key}&param2=${params.value}`
  116. })
  117. },
  118. closeOtherWindow(){
  119. return post({
  120. url: '/close_other_window',
  121. })
  122. },
  123. async minimizeSmartShooter(){
  124. return requestGet({
  125. url: '/minimize_window?window_title=Smart%20Shoote',
  126. })
  127. },
  128. async checkCamera(){
  129. if(readConfigFile().controlType === 'digiCamControl'){
  130. return fetchExampleData(`?slc=get&param1=iso`)
  131. }else {
  132. await pySocket.sendMessage(JSON.stringify({
  133. type: 'smart_shooter_getinfo',
  134. data:{}
  135. }))
  136. return new Promise(async (resolve, reject) => {
  137. pySocket.onSocketMessage('smart_shooter_getinfo',(message)=>{
  138. resolve(message)
  139. })
  140. })
  141. }
  142. }
  143. }
  144. /*
  145. *
  146. * 设置 iso
  147. * 光圈 aperture
  148. * 拍摄模式 mode
  149. * 快门速度 shutterSpeed
  150. * 白平衡 whitebalance
  151. * 曝光补偿 ExposureCompensation
  152. * 对焦模式 focusmode
  153. *
  154. *folder 文件夹
  155. 曝光度:exposure
  156. 压缩:compression
  157. 测光点:metering
  158. * */