Merge branch 'main' of ssh://git.wash-painting.cn:2222/cg/-----

This commit is contained in:
2025-12-17 23:56:37 +08:00
4 changed files with 58 additions and 32 deletions

10
pnpm-lock.yaml generated
View File

@@ -18,8 +18,8 @@ importers:
specifier: ^2.3.2 specifier: ^2.3.2
version: 2.3.2(vue@3.5.25) version: 2.3.2(vue@3.5.25)
DroneCtrl: DroneCtrl:
specifier: 1.0.1 specifier: 1.0.2
version: 1.0.1 version: 1.0.2
axios: axios:
specifier: ^1.13.2 specifier: ^1.13.2
version: 1.13.2 version: 1.13.2
@@ -252,8 +252,8 @@ packages:
'@vueuse/shared@9.13.0': '@vueuse/shared@9.13.0':
resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==} resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==}
DroneCtrl@1.0.1: DroneCtrl@1.0.2:
resolution: {integrity: sha512-3ibzb0sXZGXAkbSTg4Zb8heTx6ASBkWaI2yAO8V+4/Y2ygULruPCzb8o3c89wWlnfQQ/AALWlNmkpVV/ezBujQ==} resolution: {integrity: sha512-EQWN1q8S4mN64gMlBQkQyJIYSBVE75YLPsYI+L/67TPypOyGWnI/kxCYMPY1hNVB8sIxJO0Z3DU3wlKxwg4Qiw==}
async-validator@4.2.5: async-validator@4.2.5:
resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
@@ -781,7 +781,7 @@ snapshots:
- '@vue/composition-api' - '@vue/composition-api'
- vue - vue
DroneCtrl@1.0.1: {} DroneCtrl@1.0.2: {}
async-validator@4.2.5: {} async-validator@4.2.5: {}

View File

@@ -427,6 +427,7 @@ const wsConnected = ref(false)
const droneData = ref(null) const droneData = ref(null)
const isFlying = ref(false) const isFlying = ref(false)
const droneMarker = ref(null) const droneMarker = ref(null)
const drone2Marker = ref(null)
let wsClient = null let wsClient = null
let mockDataGenerator = null let mockDataGenerator = null
const isInFence = ref(true) const isInFence = ref(true)
@@ -558,42 +559,43 @@ let conn = null;
// 初始化WebSocket连接 // 初始化WebSocket连接
const initWebSocket = () => { const initWebSocket = () => {
// 使用模拟数据生成器因为目前没有真实WebSocket服务器 // 使用模拟数据生成器因为目前没有真实WebSocket服务器
mockDataGenerator = new MockWebSocketDataGenerator({ // mockDataGenerator = new MockWebSocketDataGenerator({
interval: 500, // 内部500ms生成一次数据用于平滑 // interval: 500, // 内部500ms生成一次数据用于平滑
startLat: 39.90923, // 北京天安门附近 // startLat: 39.90923, // 北京天安门附近
startLng: 116.397428, // startLng: 116.397428,
speed: 0.00005 // 移动速度 // speed: 0.00005 // 移动速度
}) // })
// 监听数据(使用节流,大幅降低更新频率) // // 监听数据(使用节流,大幅降低更新频率)
mockDataGenerator.start((data) => { // mockDataGenerator.start((data) => {
const now = Date.now() // const now = Date.now()
// 只更新数据状态,不触发地图更新 // // 只更新数据状态,不触发地图更新
droneData.value = data // droneData.value = data
// 节流:降低地图更新频率 // // 节流:降低地图更新频率
if (now - lastUpdateTime >= UPDATE_INTERVAL) { // if (now - lastUpdateTime >= UPDATE_INTERVAL) {
lastUpdateTime = now // lastUpdateTime = now
handleDroneData(data) // handleDroneData(data)
} // }
}) // })
wsConnected.value = true wsConnected.value = true
ElMessage.success('无人机数据连接成功(模拟模式)') ElMessage.success('无人机数据连接成功')
} }
// 起飞处理 // 起飞处理
const handleTakeoff = () => { const handleTakeoff = () => {
// 检查是否已有围栏 // 检查是否已有围栏
if (fences.value.length === 0) { // if (fences.value.length === 0) {
ElMessage.warning('请先绘制电子围栏后再起飞') // ElMessage.warning('请先绘制电子围栏后再起飞')
return // return
} // }
// 如果未连接,先连接 // // 如果未连接,先连接
if (!wsConnected.value) { // if (!wsConnected.value) {
initWebSocket() // initWebSocket()
} // }
ctrl.TakeoffAndAutoExecTask({});
// 设置飞行状态 // 设置飞行状态
isFlying.value = true isFlying.value = true
@@ -622,7 +624,22 @@ const toggleWebSocket = () => {
initWebSocket() initWebSocket()
conn = ctrl.Message(); conn = ctrl.Message();
conn.onDroneGPS = (data) => { conn.onDroneGPS = (data) => {
console.log(data); // console.log(data);
const drone1 = data.drone_1;
const drone2 = data.drone_2;
const point = gcoord.transform(
[drone1.longitude, drone1.latitude],
gcoord.WGS84, // 当前坐标系
gcoord.GCJ02, // 目标坐标系
);
const point2 = gcoord.transform(
[drone2.longitude, drone2.latitude],
gcoord.WGS84, // 当前坐标系
gcoord.GCJ02, // 目标坐标系
);
console.log(point, point2);
// updateDroneMarker(point[0], point[1], drone1.heading);
// updateDrone2Marker(point2[0], point2[1], drone2.heading);
}; };
} }
} }
@@ -1466,6 +1483,10 @@ onUnmounted(() => {
map?.remove(droneMarker.value) map?.remove(droneMarker.value)
droneMarker.value = null droneMarker.value = null
} }
if (drone2Marker.value) {
map?.remove(drone2Marker.value)
drone2Marker.value = null
}
if (mouseTool) { if (mouseTool) {
mouseTool.close() mouseTool.close()

View File

@@ -98,7 +98,9 @@ function upload(url, params) {
} }
// export let host = `${window.location.protocol}//${window.location.host}`; // export let host = `${window.location.protocol}//${window.location.host}`;
// export let host = "http://192.168.43.98:5678";
export let host = "http://192.168.3.81:5678"; export let host = "http://192.168.3.81:5678";
// export let host = "http://127.0.0.1:5678";
export const getConfig = () => { export const getConfig = () => {
return { return {

View File

@@ -5,4 +5,7 @@ import vue from '@vitejs/plugin-vue'
export default defineConfig({ export default defineConfig({
plugins: [vue()], plugins: [vue()],
base: "/web/", base: "/web/",
optimizeDeps: {
exclude: ['DroneCtrl']
}
}) })