gpt4 book ai didi

python - 如何从命令行将十六进制值传递给 python 脚本

转载 作者:行者123 更新时间:2023-11-30 22:53:57 25 4
gpt4 key购买 nike

我有一个简单的脚本,它使用 I2C 将命令(十六进制值)传递到 uC。我想通过命令行将地址和命令值作为 argv 传递。

这是我的代码:

import smbus
import time
from sys import argv

bus = smbus.SMBus(1)
addr = argv[1]
cmd = argv[2]

#address is 0x09
#commands = [0x16,0x06,0x17,0x07,0x18,0x08,0x19,0x09]

bus.write_byte(addr,cmd)

我尝试着写

python progam.py 0x09 0x19
python program.py 9 25

并且还尝试将 argv 转换为 int(),然后转换为十六进制。这些方法都不起作用。

如何将十六进制值传递到我的程序中?

最佳答案

import smbus
import time
from sys import argv

bus = smbus.SMBus(1)
if sys.argv[1].startswith("0x"): # base 16
addr = int(argv[1][2:],16)
cmd = int(argv[2][2:],16)
else: # base 10
addr = int(argv[1])
cmd = int(argv[2])
print [addr,cmd] # you should see no quotes indicating that these are indeed ints now
bus.write_byte(addr,cmd)

然后使用 $ python my_script.py 9 25 调用它或使用 $ python my_script.py 0x09 0x19

调用它

关于python - 如何从命令行将十六进制值传递给 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37999293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com