From b80dbbcb1340a5d02b2137efc9ff0e5d84c50647 Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Thu, 17 Apr 2025 17:12:39 +0800
Subject: [PATCH] feat: 控制台相机控制
---
src/hooks/controlDrone/useManualControl.js | 55 ++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 42 insertions(+), 13 deletions(-)
diff --git a/src/hooks/controlDrone/useManualControl.js b/src/hooks/controlDrone/useManualControl.js
index a2e0b97..4dc12ff 100644
--- a/src/hooks/controlDrone/useManualControl.js
+++ b/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) {
--
Gitblit v1.9.3