#!/usr/bin/env python3 """遥控器帧模拟发送器(联调用,非工程代码)。 按 24 字节协议向 UI 的 net/rc_port(默认 9002)周期发送遥控器报文。 用法示例: python rc_sender.py --mode drive --gear 4096 # 行车模式,档位推到"前" python rc_sender.py --mode arm --posx 4096 # 机械臂模式(自动带上机械臂使能) python rc_sender.py --estop # bit4=1,触发急停 python rc_sender.py --battery 42 # 电量显示 42% python rc_sender.py --roll 4096 --pitch 0 # 右摇杆两轴反向 python rc_sender.py --bad-checksum # 校验和故意错,应被丢弃 """ import argparse import socket import struct import time MID = 2048 def build_frame(a): flags = 0 if a.mode == "drive": flags |= 0x01 # bit0 行车模式 if not a.no_chassis_enable: flags |= 0x08 # bit3 底盘使能 else: flags |= 0x02 | 0x04 # bit1 机械臂模式须与 bit2 使能同时置 1 if a.estop: flags |= 0x10 # bit4 急停 f = bytearray(24) f[0] = 0x11 # 帧头 f[1] = flags axes = (a.gear, a.steer, a.posz, a.posx, a.posy, a.roll, a.pitch, a.yaw) for i, v in enumerate(axes): struct.pack_into("