From 949a21a036d3c5b5df4e07bd5ecc80b08eeff841 Mon Sep 17 00:00:00 2001
From: chenyao <1219716595@qq.com>
Date: Fri, 18 Apr 2025 08:44:06 +0800
Subject: [PATCH] feat:打印系统运维地址

---
 src/hooks/controlDrone/useManualControl.js |   71 +++++++++++++++++++++++++----------
 1 files changed, 50 insertions(+), 21 deletions(-)

diff --git a/src/hooks/controlDrone/useManualControl.js b/src/hooks/controlDrone/useManualControl.js
index 2910d6f..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
 
@@ -34,15 +35,16 @@
 		KEY_M: 'KeyM',
 	}
 
-export function useManualControl(mqttState,deviceTopicInfo, isCurrentFlightController) {
+export function useManualControl(mqttState,deviceTopicInfo, isCurrentFlightController,paramsRef) {
 	const activeCodeKey = ref(null)
-
+	let genPortOne = true //是一代机场
 	const mqttHooks = useMqtt(mqttState,deviceTopicInfo)
 	let seq = 0
+	let throttledPtz = null
 
 	function handlePublish(params) {
 		const body = {
-			method: DRC_METHOD.DRONE_CONTROL,
+			method: genPortOne ? DRC_METHOD.DRONE_CONTROL : DRC_METHOD.DRONE_CONTROL2,
 			data: params,
 		}
 		handleClearInterval()
@@ -54,81 +56,108 @@
 		}, 50)
 	}
 
-	function handleKeyup(keyCode,params) {
-		const {sn,speed} = params
-		let genPortOne = false //是一代机场
+	function handleKeyup(keyCode) {
+		const  {droneSn,speed} =  paramsRef.value
+
 		if (!deviceTopicInfo.pubTopic) {
 			ElMessage.error('请确保已经建立DRC链路')
 			return
 		}
-		if (sn === '4TADKCM0010016' || sn === 'BA0BA1C3D38157A49E1B16574FA474F7') {
+		if (droneSn.value === '4TADKCM0010016' || droneSn.value === 'BA0BA1C3D38157A49E1B16574FA474F7') {
 			genPortOne = true
 		}
 
-		const SPEED = genPortOne ? (speed || 5) : 500 //  check
+		const SPEED = genPortOne ? (speed.value || 5) : 500 //  check
 		const HEIGHT = genPortOne ? 5 : 500; //  check
 		const W_SPEED = genPortOne ? 20 : 500 // 机头角速度
 
 		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