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

Python如何将命令行输入的十六进制I2C地址传入传感器初始化参数?

问题原因

命令行通过sys.argv获取的所有参数默认是字符串类型,而adafruit_ina260.INA260初始化的address参数要求传入整数类型的十六进制地址。你直接传入sys.argv[1]时,相当于传入了字符串"0x45",和预期的整数0x45(等价于十进制数值69)类型不匹配,因此触发报错。

解决方案

将命令行获取的字符串参数转换为十六进制整数即可,转换时指定base=16即可正确解析十六进制格式的输入,转换代码如下:

i2c_address = int(sys.argv[1], base=16)

完整可运行代码示例

import sys
import board
import adafruit_ina260

# 初始化I2C总线(可根据你的硬件实际配置调整)
i2c = board.I2C()

# 处理地址参数
try:
    # 将输入的十六进制字符串转换为整数
    i2c_address = int(sys.argv[1], 16)
except IndexError:
    print("错误:缺少硬件地址参数,执行命令示例:python3 sensor.py 0x45")
    sys.exit(1)
except ValueError:
    print("错误:地址格式非法,请输入十六进制格式地址,例如0x45")
    sys.exit(1)

# 初始化传感器
ina260 = adafruit_ina260.INA260(i2c, address=i2c_address)

补充说明

该转换代码兼容带0x前缀和不带前缀的十六进制输入,你传入0x45或者45都可以被正确识别为符合要求的整数地址。

内容的提问来源于stack exchange,提问作者tom82

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:12:03