|
|
|
|
import {Airline, AirlinePoint, UavDynamicInfo} from "@/types/entityoptions.ts";
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 处理来自中心指控websocket的数据,返回所需数据
|
|
|
|
|
* @param websocketDataCC
|
|
|
|
|
* @return UavDynamicInfo
|
|
|
|
|
*/
|
|
|
|
|
function dataProcess(websocketDataCC:any): UavDynamicInfo|null {
|
|
|
|
|
let data:UavDynamicInfo = {
|
|
|
|
|
alt: 0, groundSpeed: 0, heading: 0, lat: 0, lon: 0, uavId: "", uavType: ""
|
|
|
|
|
}
|
|
|
|
|
if(websocketDataCC.infoType===1) {
|
|
|
|
|
let aUavInfo:any = websocketDataCC.info[0] //目前只取第一个uav
|
|
|
|
|
sessionStorage.setItem("uavId",aUavInfo.uavId)
|
|
|
|
|
data.uavId = aUavInfo.uavId
|
|
|
|
|
data.uavType = getUavTypeStr(aUavInfo.uavType)
|
|
|
|
|
data.uavFlightControlSn = aUavInfo.uavFlightControlSn
|
|
|
|
|
if(aUavInfo.hasShortUavDynamicInfo){
|
|
|
|
|
if(aUavInfo.shortUavDynamicInfo.hasShortAttitudeInfo){
|
|
|
|
|
data.heading = aUavInfo.shortUavDynamicInfo.shortAttitudeInfo.courseAngle * 0.01
|
|
|
|
|
}
|
|
|
|
|
if(aUavInfo.shortUavDynamicInfo.hasShortPositionInfo){
|
|
|
|
|
data.lon = aUavInfo.shortUavDynamicInfo.shortPositionInfo.lng * (10**-7)
|
|
|
|
|
data.lat = aUavInfo.shortUavDynamicInfo.shortPositionInfo.lat * (10**-7)
|
|
|
|
|
data.alt = aUavInfo.shortUavDynamicInfo.shortPositionInfo.alt * (10**-2)
|
|
|
|
|
data.groundSpeed = aUavInfo.shortUavDynamicInfo.shortPositionInfo.groundSpeed * 0.001 //km/h
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return data.lon==0? null: data
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 处理来自QT端 websocket的数据,返回所需数据
|
|
|
|
|
* @param websocketDataQT
|
|
|
|
|
* @return UavDynamicInfo
|
|
|
|
|
*/
|
|
|
|
|
function dataProcess_fromQT(websocketDataQT:any): UavDynamicInfo|null {
|
|
|
|
|
let data:UavDynamicInfo = {
|
|
|
|
|
alt: 0, groundSpeed: 0, heading: 0, lat: 0, lon: 0, uavId: "", uavType: ""
|
|
|
|
|
}
|
|
|
|
|
data.uavId = websocketDataQT.uavId
|
|
|
|
|
data.uavType = websocketDataQT.uavType
|
|
|
|
|
data.heading = websocketDataQT.HeadAngle
|
|
|
|
|
data.lon = websocketDataQT.lon
|
|
|
|
|
data.lat = websocketDataQT.lat
|
|
|
|
|
data.alt = websocketDataQT.height
|
|
|
|
|
data.groundSpeed = websocketDataQT.groundSpeed //km/h
|
|
|
|
|
|
|
|
|
|
return data.lon==0? null: data
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getAirline(data: any): Airline | null {
|
|
|
|
|
let line: Airline = {totalDistance: 0, PtNum: 0, name: "", isClose: false, points: []}
|
|
|
|
|
line.PtNum = data.PtNum
|
|
|
|
|
line.name = data.Name
|
|
|
|
|
line.isClose = data.isClose
|
|
|
|
|
line.totalDistance = data.totalDistance
|
|
|
|
|
for (let i = 0; i < data.ListPoints.length; i++) {
|
|
|
|
|
let point: AirlinePoint = {
|
|
|
|
|
alt: 0, lat: 0, lon: 0
|
|
|
|
|
}
|
|
|
|
|
line.points.push(point)
|
|
|
|
|
}
|
|
|
|
|
return line
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function getUavTypeStr(type: number) : string{
|
|
|
|
|
switch (type) {
|
|
|
|
|
case 1: return '981A'
|
|
|
|
|
case 2: return '981C'
|
|
|
|
|
default: return 'test'
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
export {dataProcess_fromQT,getAirline}
|