| | |
| | | import { DRC_METHOD } from '@/const/drc.js' |
| | | import { useMqtt } from '@/hooks/controlDrone/useMqtt' |
| | | import { ElMessage } from 'element-plus' |
| | | import { postPayloadCommands } from '@/api/payload' |
| | | |
| | | let myInterval |
| | | |
| | | export const KeyCode = { |
| | | KEY_W: 'KeyW', |
| | | KEY_A: 'KeyA', |
| | | KEY_S: 'KeyS', |
| | | KEY_D: 'KeyD', |
| | | KEY_Q: 'KeyQ', |
| | | KEY_E: 'KeyE', |
| | | ARROW_UP: 'ArrowUp', |
| | | ARROW_DOWN: 'ArrowDown', |
| | | } |
| | | export const KeyCode = { |
| | | KEY_W: 'KeyW', |
| | | KEY_A: 'KeyA', |
| | | KEY_S: 'KeyS', |
| | | KEY_D: 'KeyD', |
| | | KEY_Q: 'KeyQ', |
| | | KEY_E: 'KeyE', |
| | | KEY_J: 'KeyJ', |
| | | KEY_K: 'KeyK', |
| | | KEY_L: 'KeyL', |
| | | KEY_X: 'KeyX', |
| | | KEY_Z: 'KeyZ', |
| | | KEY_C: 'KeyC', |
| | | KEY_I: 'KeyI', |
| | | KEY_O: 'KeyO', |
| | | ARROW_UP: 'ArrowUp', |
| | | ARROW_DOWN: 'ArrowDown', |
| | | ARROW_LEFT: 'ArrowLeft', |
| | | ARROW_RIGHT: 'ArrowRight', |
| | | NUMPAD_SUBTRACT: 'NumpadSubtract', |
| | | NUMPAD_ADD: 'NumpadAdd', |
| | | // 提升速度 |
| | | KEY_EQUAL: 'Equal', |
| | | KEY_MINUS: 'Minus', |
| | | // 录音 |
| | | KEY_N: 'KeyN', |
| | | KEY_M: 'KeyM', |
| | | } |
| | | |
| | | export function useManualControl(mqttState,deviceTopicInfo, isCurrentFlightController) { |
| | | const activeCodeKey = ref(null) |
| | |
| | | }, 50) |
| | | } |
| | | |
| | | function handleKeyup(keyCode) { |
| | | function handleKeyup(keyCode,params) { |
| | | const {sn,speed} = params |
| | | let genPortOne = false //是一代机场 |
| | | if (!deviceTopicInfo.pubTopic) { |
| | | ElMessage.error('请确保已经建立DRC链路') |
| | | return |
| | | } |
| | | const SPEED = 5 // check |
| | | const HEIGHT = 5 // check |
| | | const W_SPEED = 20 // 机头角速度 |
| | | if (sn === '4TADKCM0010016' || sn === 'BA0BA1C3D38157A49E1B16574FA474F7') { |
| | | genPortOne = true |
| | | } |
| | | |
| | | const SPEED = genPortOne ? (speed || 5) : 500 // check |
| | | const HEIGHT = genPortOne ? 5 : 500; // check |
| | | const W_SPEED = genPortOne ? 20 : 500 // 机头角速度 |
| | | |
| | | seq = 0 |
| | | switch (keyCode) { |
| | | case 'KeyA': |
| | | if (activeCodeKey.value === keyCode) return |
| | | handlePublish({ y: -SPEED }) |
| | | case 'KeyQ': |
| | | if (activeCodeKey === keyCode) return |
| | | let objQ = { yaw: 1024-W_SPEED } |
| | | if (genPortOne) {objQ = {w: -W_SPEED}} |
| | | handlePublish(objQ) |
| | | activeCodeKey.value = keyCode |
| | | break |
| | | case 'KeyW': |
| | | if (activeCodeKey.value === keyCode) return |
| | | handlePublish({ x: SPEED }) |
| | | if (activeCodeKey === keyCode) return |
| | | let objW = { pitch: 1024+SPEED } |
| | | if (genPortOne) {objW = {x: SPEED}} |
| | | handlePublish(objW) |
| | | activeCodeKey.value = keyCode |
| | | break |
| | | case 'KeyE': |
| | | if (activeCodeKey === 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 |
| | | let objA = { roll: 1024-SPEED } |
| | | if (genPortOne) {objA = {y: -SPEED}} |
| | | handlePublish(objA) |
| | | activeCodeKey.value = keyCode |
| | | break |
| | | case 'KeyS': |
| | | if (activeCodeKey.value === keyCode) return |
| | | handlePublish({ x: -SPEED }) |
| | | if (activeCodeKey === keyCode) return |
| | | let objS = { pitch: 1024-SPEED } |
| | | if (genPortOne) {objS = {x: -SPEED}} |
| | | handlePublish(objS) |
| | | activeCodeKey.value = keyCode |
| | | break |
| | | case 'KeyD': |
| | | if (activeCodeKey.value === keyCode) return |
| | | handlePublish({ y: SPEED }) |
| | | if (activeCodeKey === keyCode) return |
| | | let objD = { roll: 1024+SPEED } |
| | | if (genPortOne) {objD = {y: SPEED}} |
| | | handlePublish(objD) |
| | | activeCodeKey.value = keyCode |
| | | break |
| | | case 'ArrowUp': |
| | |
| | | handlePublish({ h: -HEIGHT }) |
| | | activeCodeKey.value = keyCode |
| | | break |
| | | case 'KeyQ': |
| | | if (activeCodeKey.value === keyCode) return |
| | | handlePublish({ w: -W_SPEED }) |
| | | activeCodeKey.value = keyCode |
| | | break |
| | | case 'KeyE': |
| | | if (activeCodeKey.value === keyCode) return |
| | | handlePublish({ w: W_SPEED }) |
| | | activeCodeKey.value = keyCode |
| | | break |
| | | |
| | | default: |
| | | break |
| | | } |
| | | } |
| | | |
| | | const handlePayloadTurn = (params) => { |
| | | handleClearInterval() |
| | | if (!this.myInterval) { |
| | | postPayloadCommands(this.sn, params) |
| | | } |
| | | this.myInterval = setInterval(() => { |
| | | postPayloadCommands(this.sn, params) |
| | | }, 500) |
| | | } |
| | | |
| | | |
| | | function handleClearInterval() { |
| | | clearInterval(myInterval) |
| | | myInterval = undefined |