AFSIM - #002 使用python接收warlock的数据

在这里插入图片描述

使用node接收warlock的数据

1 目标

本文的目的是使用node接收warlock的数据。

2 代码

2.1 安装包

pip install grpcio grpcio-tools

2.2 使用 protoc 命令生成 Python 代码

运行后会生成2个py文件(af_service_pb2.py和af_service_pb2_grpc.py)

python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. af_service.proto

2.3 主程序(需要使用多线程处理多个stream)

import grpc
import time
from af_service_pb2_grpc import AFDataCollectServiceStub
from af_service_pb2 import Request
import threading

# 配置
CONFIG = {
   
    'server_address': '127.0.0.1:5005',
    'max_retries': 3,
    'retry_delay': 2,  # 秒
    'connection_timeout': 5,  # 秒
}

# 重试状态
state = {
   
    'current_retry': 0,
    'is_shutting_down': False
}


# ================= 工具函数 ===================
def safe_number(num, precision=6):
    return f"{
     num:.{
     precision}f}" if isinstance(num, (int, float)) else "无数据"


def format_position(pos):
    if not pos:
        return '  位置信息: 无可用数据'

    return f"""   位置详情:
    坐标: ({
     safe_number(pos.lat)}, {
     safe_number(pos.lon)}) 高度: {
     safe_number(pos.alt, 1)}米
    北东天坐标: [X: {
     safe_number(pos.neu_x, 2)}, Y: {
     safe_number(pos.neu_y, 2)}, Z: {
     safe_number(pos.neu_z, 2)}]
    姿态: 航向 {
     safe_number(pos.heading, 1)}°, 俯仰 {
     safe_number(pos.pitch, 1)}°, 横滚 {
     safe_number(pos.roll, 1)}°
    速度: {
     safe_number(pos.speed, 1)} 米/秒 (北东天速度: [{
     safe_number(pos.neu_vx, 1)}, {
     safe_number(pos.neu_vy, 1)}, {
     safe_number(pos.neu_vz, 1)}])
    角度: 攻角 {
     safe_number(pos.attack_angle, 2)}°, 侧滑角 {
     safe_number(pos.sideslip_angle, 2)}°
    """


def format_sensor_info(sensors):
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

满天飞飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值