You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Arduino转Python:十六进制地址常量的正确声明方法求助

Python中十六进制常量的正确声明方式

你在Python里错误地将十六进制地址声明为了列表类型,这和Arduino里#define定义的单值常量逻辑完全不同——串口发送时会把列表当作多元素序列处理,自然会导致数据错误。

正确的声明方式是直接将其定义为单个整数(Python中0x开头的写法本身就表示十六进制整数,和C/Arduino里的逻辑一致):

adrram = 0x00
adrtemp = 0x03

如果你的串口发送函数(比如pySerial的write方法)需要字节类型的数据,可以把整数转换为单字节:

# 方式1:用bytes()转换
ser.write(bytes([adrram]))

# 方式2:用to_bytes()指定字节序
ser.write(adrram.to_bytes(1, byteorder='big'))

举个完整的串口发送示例:

import serial

# 初始化串口(根据你的树莓派串口端口调整)
ser = serial.Serial('/dev/ttyAMA0', 9600, timeout=1)

# 声明十六进制地址常量
adrram = 0x00
adrtemp = 0x03

# 发送adrram对应的字节
ser.write(bytes([adrram]))

ser.close()

内容的提问来源于stack exchange,提问作者Cezar-Bogdan Rusu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 18:32:37