#pragma once #include "global.h" struct Flight_VTO { std::string icao; // 飞机身份标识(四字节十六进制代码) time_t time_stamp{}; // 时间(原始时间数据,可能需要翻译显示) bool mlat; RET pos; // 纬度(飞机的当前位置纬度) RET track; // 航迹(航迹方向,单位:度) RET speed; // 航速(单位:米/秒) RET vert_speed; // 航速(单位:米/秒) RET altitude; // 米 RET call_sign; RET squawk; Psc::JSON toJson() { auto ret = Psc::JSON::object(); ADD_Json(icao); ADD_Json(mlat); ret.children.emplace_back("time_stamp", timeToString(time_stamp)); if (pos.has_value()) { ret.children.emplace_back("latitude", pos.value().lat); ret.children.emplace_back("longitude", pos.value().lon); } else { ret.children.emplace_back("latitude", nullptr); ret.children.emplace_back("longitude", nullptr); } ADD_Json_RET(track); ADD_Json_RET(speed); ADD_Json_RET(altitude); ADD_Json_RET(vert_speed); ADD_Json_RET(call_sign); ADD_Json_RET(squawk); return ret; } std::string timeToString(time_t time_stamp) { struct tm* utc_time = std::gmtime(&time_stamp); // 转换为 UTC 时间 char buffer[80]; // 使用 strftime 格式化时间为字符串 std::strftime(buffer, sizeof(buffer), "%H:%M:%S", utc_time); return std::string(buffer); // 返回格式化后的时间字符串 } static Flight_VTO to_VTO(SSR::Aircraft_Info* info) { Flight_VTO vto; vto.icao = info->icao; vto.mlat = info->mlat; vto.time_stamp = info->timestamp; vto.speed = info->speed(); // 这个地 是相对于地的意思 vto.track = info->surface_magnetic_heading(); // vto.pos = info->pos(); vto.pos = info->air_pos_track_list.last(); vto.altitude = info->altitude_meter(); vto.vert_speed = info->vertical_rate(); vto.call_sign = info->bds20_call_sign(); vto.squawk = info->squawk(); return vto; } };