i2c地址超出范围

时间:2015-04-08 12:20:41

标签: python subprocess i2c

我一直在尝试使用MCP23017以及我的beaglebone ..但是我还没有收到我的设备,但我已经开始准备我的程序...... 我现在正在编程GPIO引脚。这里我尝试使用i2c命令读取和写入引脚,如下所示: 写 -

a=('i2cset', '-y', '0', '0x20', '0x14', '0x01')
subprocess.call(a, shell=True)

类似地使用i2cget进行阅读..但是当我尝试运行它时,它会在我的屏幕上给我一个通知说

Usage: i2cset [-f] [-y I2CBUS CHIP-ADDRESS [DATA-ADDRESS [MODE]]
I2CBUS is an integer or an I2C bus name
ADDRESS is an integer (0x03- 0x77)

我是否仅收到此通知,因为我还没有连接设备?或者因为使用子进程模块是一个问题吗?

感谢任何帮助,

Namita。

1 个答案:

答案 0 :(得分:0)

假设您已在shell中尝试过该命令并且它有效。 如果在shell=True中设置subprocess.call(),建议使用字符串而不是序列(在您的情况下为元组)作为第一个参数。

如果使用shell=True并将序列作为第一个参数传递,则第二个参数中的参数将被视为shell本身的参数。

有关详细信息,请参阅此答案: https://stackoverflow.com/a/15109975/870658

您可以重写如下

cmd = 'i2cset -y 0 0x20 0x14 0x01'
subprocess.call(cmd, shell=True)