#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 测试控制命令协议 发送测试控制命令到STM32以验证协议正确性 """ import serial import struct import time def calculate_checksum(data: bytes) -> int: """计算16位累加和校验""" return sum(data) & 0xFFFF def send_control_command(ser: serial.Serial, steering_pwm: int, throttle_pwm: int): """ 发送控制命令 Args: ser: 串口对象 steering_pwm: 转向PWM值 (1000-2000us) throttle_pwm: 油门PWM值 (1000-2000us) """ # 协议常量 FRAME_HEADER1 = 0xAA FRAME_HEADER2 = 0x55 TYPE_CONTROL = 0x10 FRAME_FOOTER1 = 0x0D FRAME_FOOTER2 = 0x0A # 限制PWM范围 steering_pwm = max(1000, min(2000, steering_pwm)) throttle_pwm = max(1000, min(2000, throttle_pwm)) # 构建数据包 data_len = 4 # 2字节转向 + 2字节油门 payload = struct.pack('