From b775b3077324cb9dd7dfdedbed8baaf7d40bf9f1 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Thu, 17 Apr 2025 20:45:18 +0800
Subject: [PATCH] feat:事件点、聚合点---点击事件抽离

---
 src/hooks/controlDrone/useManualControl.js |   69 +++++++++++++++++++++++++---------
 1 files changed, 51 insertions(+), 18 deletions(-)

diff --git a/src/hooks/controlDrone/useManualControl.js b/src/hooks/controlDrone/useManualControl.js
index 2910d6f..f1295a2 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,15 @@
 		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
 
 	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 +55,113 @@
 		}, 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 'KeyZ':
+				if (activeCodeKey.value === keyCode) return
+				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':
 				if (activeCodeKey.value === keyCode) return
-				handlePublish({ h: HEIGHT })
+				myInterval = setInterval(()=>ptzControl('up'), 50)
 				activeCodeKey.value = keyCode
 				break
 			case 'ArrowDown':
 				if (activeCodeKey.value === keyCode) return
-				handlePublish({ h: -HEIGHT })
+				myInterval = setInterval(()=>ptzControl('down'), 50)
 				activeCodeKey.value = keyCode
 				break
-
+			case 'ArrowLeft':
+				if (activeCodeKey.value === keyCode) return
+				myInterval = setInterval(()=>ptzControl('left'), 50)
+				activeCodeKey.value = keyCode
+				break
+			case 'ArrowRight':
+				if (activeCodeKey.value === keyCode) return
+				myInterval = setInterval(()=>ptzControl('right'), 50)
+				activeCodeKey.value = keyCode
+				break
 			default:
 				break
 		}
 	}
 
+	// 云台上下左右
+	function ptzControl(key) {
+		const  {dockSn} =  paramsRef.value
+		ptzControlApi(key, { sn: dockSn }).then(res => {
+
+		})
+	}
+
 	const handlePayloadTurn = (params) => {
 		handleClearInterval()
 		if (!this.myInterval) {

--
Gitblit v1.9.3