forked from drone/command-center-dashboard

罗广辉
2025-04-17 b80dbbcb1340a5d02b2137efc9ff0e5d84c50647
src/hooks/controlDrone/useManualControl.js
@@ -1,7 +1,8 @@
import { DRC_METHOD } from '@/const/drc.js'
import { useMqtt } from '@/hooks/controlDrone/useMqtt'
import { ElMessage } from 'element-plus'
import { postPayloadCommands } from '@/api/payload'
import { postPayloadCommands, ptzControlApi } from '@/api/payload'
import { throttle } from 'lodash'
let myInterval
@@ -39,6 +40,7 @@
   let genPortOne = true //是一代机场
   const mqttHooks = useMqtt(mqttState,deviceTopicInfo)
   let seq = 0
   let throttledPtz = null
   function handlePublish(params) {
      const body = {
@@ -72,63 +74,90 @@
      seq = 0
      switch (keyCode) {
         case 'KeyQ':
            if (activeCodeKey === keyCode) return
            if (activeCodeKey.value === keyCode) return
            let objQ = { yaw: 1024-W_SPEED }
            if (genPortOne) {objQ = {w: -W_SPEED}}
            handlePublish(objQ)
            activeCodeKey.value = keyCode
            break
         case 'KeyW':
            if (activeCodeKey === keyCode) return
            if (activeCodeKey.value === keyCode) return
            let objW = { pitch: 1024+SPEED }
            if (genPortOne) {objW = {x: SPEED}}
            handlePublish(objW)
            activeCodeKey.value = keyCode
            break
         case 'KeyE':
            if (activeCodeKey === keyCode) return
            if (activeCodeKey.value === keyCode) return
            let objE = { yaw: 1024+W_SPEED }
            if (genPortOne) {objE = {w: W_SPEED}}
            handlePublish(objE)
            activeCodeKey.value = keyCode
            break
         case 'KeyA':
            if (activeCodeKey === keyCode) return
            if (activeCodeKey.value === keyCode) return
            let objA = { roll: 1024-SPEED }
            if (genPortOne) {objA = {y: -SPEED}}
            handlePublish(objA)
            activeCodeKey.value = keyCode
            break
         case 'KeyS':
            if (activeCodeKey === keyCode) return
            if (activeCodeKey.value === keyCode) return
            let objS = { pitch: 1024-SPEED }
            if (genPortOne) {objS = {x: -SPEED}}
            handlePublish(objS)
            activeCodeKey.value = keyCode
            break
         case 'KeyD':
            if (activeCodeKey === keyCode) return
            if (activeCodeKey.value === keyCode) return
            let objD = { roll: 1024+SPEED }
            if (genPortOne) {objD = {y: SPEED}}
            handlePublish(objD)
            activeCodeKey.value = keyCode
            break
         case 'ArrowUp':
         case 'KeyZ':
            if (activeCodeKey.value === keyCode) return
            handlePublish({ h: HEIGHT })
            let objZ = { throttle: 1024-HEIGHT }
            if (genPortOne) {objZ = {h: -HEIGHT}}
            handlePublish(objZ)
            activeCodeKey.value = keyCode
            break
         // case 'ArrowDown':
         case 'KeyC':
            if (activeCodeKey.value === keyCode) return
            let objC = { throttle: 1024+HEIGHT }
            if (genPortOne) {objC = {h: HEIGHT}}
            handlePublish(objC)
            activeCodeKey.value = keyCode
            break
         case 'ArrowUp':
            ptzThrottle[0]()
            break
         case 'ArrowDown':
            if (activeCodeKey.value === keyCode) return
            handlePublish({ h: -HEIGHT })
            activeCodeKey.value = keyCode
            ptzThrottle[1]()
            break
         case 'ArrowLeft':
            ptzThrottle[2]()
            break
         case 'ArrowRight':
            ptzThrottle[3]()
            break
         default:
            break
      }
   }
   // 云台控制节流list
   const ptzThrottle = ['up','down','left','right'].map(key => throttle(()=>ptzControl(key), 500))
   // 云台上下左右
   function ptzControl(key) {
      const  {dockSn} =  paramsRef.value
      ptzControlApi(key, { sn: dockSn }).then(res => {
      })
   }
   const handlePayloadTurn = (params) => {
      handleClearInterval()
      if (!this.myInterval) {