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