python与stm32串口通信遇到的问题

本文介绍了一个使用Python的示例代码,通过Serial库进行串口通信,控制多个舵机和动作组。然而,代码中出现了一个ValueError,指出在调用move_servos函数时参数类型检查错误。作者寻求帮助解决这个关于参数类型转换的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import serial
import struct

# 定义串口通信参数
SERIAL_PORT = 'COM5'  # 替换为你的串口名称
BAUDRATE = 9600  # 波特率
TIMEOUT = 1  # 秒

# 定义指令集
CMD_MULT_SERVO_MOVE = 0x03  # 控制多个舵机的转动
CMD_FULL_ACTION_RUN = 0x06  # 动作组运行
CMD_FULL_ACTION_STOP = 0x07  # 停止正在运行的动作
CMD_FULL_ACTION_ERASE = 0x08  # 擦除动作组
CMD_BLE_SERVO_DOWNLOAD = 0x25  # 通过蓝牙下载动作组

# 初始化串口
ser = serial.Serial(SERIAL_PORT, BAUDRATE, timeout=TIMEOUT)

def build_data_packet(cmd, params):
    """
    构建数据包。
    :param cmd: 指令码
    :param params: 参数列表
    :return: 打包后的数据
    """
    length = len(params) + 2  # 2为指令和长度本身占用的字节
    packet = bytearray([0x55, 0x55, length])  # 帧头和数据长度
    packet.extend(struct.pack('B',cmd))  # 指令
    for param in params:
        if isinstance(param, int):
            packet.extend(struct.pack('B', param))  # 参数
        else:
            raise ValueError("参数必须是整数类型")  # 参数
    checksum = sum(packet) & 0xFF
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值