|
@@ -35,12 +35,32 @@ const warnAudio = ref(false)
|
|
|
const quantity = ref(0)
|
|
const quantity = ref(0)
|
|
|
const error = ref('')
|
|
const error = ref('')
|
|
|
const conctrlData = ref({
|
|
const conctrlData = ref({
|
|
|
- v0: 0, v1: 0, v2: 0, v3: 0
|
|
|
|
|
|
|
+ v0: 128, v1: 128, v2: 128, v3: 128
|
|
|
})
|
|
})
|
|
|
-
|
|
|
|
|
-const speed = ref(1) // 1低速档 | 2 高速档
|
|
|
|
|
|
|
+const conctrlAnimation = ref(0)
|
|
|
|
|
+const conctrlGrears = ref(false)
|
|
|
|
|
+const conctrlNum = ref(0)
|
|
|
const SpeedValue = ref(0)
|
|
const SpeedValue = ref(0)
|
|
|
|
|
|
|
|
|
|
+// 方向盘数据
|
|
|
|
|
+function onContrlData() {
|
|
|
|
|
+ if (showLoading.value) return
|
|
|
|
|
+ socket.value?.emit('msg', { type: 'conctrl', conctrl: { ...conctrlData.value } })
|
|
|
|
|
+ conctrlAnimation.value = requestAnimationFrame(onContrlData)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 档位计算
|
|
|
|
|
+function countContrlData(v: number) {
|
|
|
|
|
+ // 转10进制
|
|
|
|
|
+ const num = parseInt(v.toString(), 10)
|
|
|
|
|
+ if (conctrlNum.value % 2) {
|
|
|
|
|
+ // 倒档
|
|
|
|
|
+ return num <= 128 ? 0 : Math.abs((255 - num) - 128)
|
|
|
|
|
+ }
|
|
|
|
|
+ // 前进
|
|
|
|
|
+ return num <= 128 ? 255 : ((255 - num) + 128)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
// 关闭
|
|
// 关闭
|
|
|
function close(err?: string) {
|
|
function close(err?: string) {
|
|
|
if (Peer.value) Peer.value?.close()
|
|
if (Peer.value) Peer.value?.close()
|
|
@@ -53,6 +73,7 @@ function close(err?: string) {
|
|
|
Peer.value = null
|
|
Peer.value = null
|
|
|
audioStateNum.value = 0
|
|
audioStateNum.value = 0
|
|
|
quantity.value = 0
|
|
quantity.value = 0
|
|
|
|
|
+ cancelAnimationFrame(conctrlAnimation.value)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// init socket
|
|
// init socket
|
|
@@ -105,6 +126,7 @@ function intSoketRtc(host: string) {
|
|
|
if (state === 'connected') {
|
|
if (state === 'connected') {
|
|
|
await sleep(3000)
|
|
await sleep(3000)
|
|
|
showLoading.value = false
|
|
showLoading.value = false
|
|
|
|
|
+ onContrlData()
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
@@ -135,21 +157,22 @@ function intSoketRtc(host: string) {
|
|
|
|
|
|
|
|
// 遥控数据
|
|
// 遥控数据
|
|
|
window.$electron?.on('contrlData', (db: Uint8Array) => {
|
|
window.$electron?.on('contrlData', (db: Uint8Array) => {
|
|
|
- console.log(1)
|
|
|
|
|
-
|
|
|
|
|
- // 鸣笛
|
|
|
|
|
|
|
+ // 倒档 | 前进 =>右拨片
|
|
|
|
|
+ conctrlGrears.value = db[6] === 2
|
|
|
|
|
+ // 鸣笛 =>回车
|
|
|
warnAudio.value = !!db[54]
|
|
warnAudio.value = !!db[54]
|
|
|
- // 录音
|
|
|
|
|
|
|
+ // 录音 =>左拨片
|
|
|
micState.value = db[6] === 1
|
|
micState.value = db[6] === 1
|
|
|
- // 静音
|
|
|
|
|
|
|
+ // 静音 =>L3
|
|
|
audioState.value = db[6] === 64
|
|
audioState.value = db[6] === 64
|
|
|
// 控制
|
|
// 控制
|
|
|
conctrlData.value = {
|
|
conctrlData.value = {
|
|
|
- v0: 0,
|
|
|
|
|
- v1: 0,
|
|
|
|
|
- v2: parseInt(db[44].toString(), 10), // 转10进制
|
|
|
|
|
- v3: 0
|
|
|
|
|
|
|
+ v0: 128,
|
|
|
|
|
+ v1: 128,
|
|
|
|
|
+ v2: parseInt(db[44].toString(), 10), // 方向盘
|
|
|
|
|
+ v3: countContrlData(db[46]) // 油门
|
|
|
}
|
|
}
|
|
|
|
|
+ console.log(6, conctrlData.value)
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
// 窗口事件
|
|
// 窗口事件
|
|
@@ -178,21 +201,18 @@ async function login(data: { name: string, roomID: string }) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 监听按钮状态
|
|
// 监听按钮状态
|
|
|
-watch([ audioState, warnAudio ], () => {
|
|
|
|
|
|
|
+watch([ audioState, warnAudio, conctrlGrears ], () => {
|
|
|
if (showLoading.value) return
|
|
if (showLoading.value) return
|
|
|
if (audioState.value) {
|
|
if (audioState.value) {
|
|
|
audioStateNum.value++
|
|
audioStateNum.value++
|
|
|
socket.value?.emit('msg', { type: 'contrlAudio', contrlAudio: !!(audioStateNum.value % 2) })
|
|
socket.value?.emit('msg', { type: 'contrlAudio', contrlAudio: !!(audioStateNum.value % 2) })
|
|
|
}
|
|
}
|
|
|
|
|
+ if (conctrlGrears.value) {
|
|
|
|
|
+ conctrlNum.value++
|
|
|
|
|
+ }
|
|
|
if (warnAudio.value) socket.value?.emit('msg', { type: 'warnAudio' })
|
|
if (warnAudio.value) socket.value?.emit('msg', { type: 'warnAudio' })
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
-// 监听方向盘
|
|
|
|
|
-watch(conctrlData, () => {
|
|
|
|
|
- if (showLoading.value) return
|
|
|
|
|
- socket.value?.emit('msg', { type: 'conctrl', conctrl: { ...conctrlData.value } })
|
|
|
|
|
-})
|
|
|
|
|
-
|
|
|
|
|
// 初始化
|
|
// 初始化
|
|
|
onMounted(() => intSoketRtc(HOST))
|
|
onMounted(() => intSoketRtc(HOST))
|
|
|
onUnmounted(() => close())
|
|
onUnmounted(() => close())
|
|
@@ -256,7 +276,7 @@ window.$electron.send('close-loading')
|
|
|
<div class="gauge">
|
|
<div class="gauge">
|
|
|
<Gauge
|
|
<Gauge
|
|
|
:value="SpeedValue"
|
|
:value="SpeedValue"
|
|
|
- :gears="speed"
|
|
|
|
|
|
|
+ :gears="conctrlNum % 2 ? '倒档' : '前进'"
|
|
|
/>
|
|
/>
|
|
|
</div>
|
|
</div>
|
|
|
<Loading v-if="showLoading" />
|
|
<Loading v-if="showLoading" />
|