我一直在尝试使用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。
答案 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)