如何使用 Python 在 Raspberry Pi 上列出 I2C 地址?

How to list I2C address on Raspberry Pi using Python?

我的目标是一旦我的程序 运行 就能够看到可用的 i2c 地址列表。当前程序可以通过以下代码列出用户输入的地址:

while True:  
    if input.upper().startswith("LIST_ADDR"):  
        devices = device.list_i2c_devices()  
        for i in range(len (devices)):
            print devices[i]  

我已经能够使用仅使用底部 3 行的代码,但是我现在有五个 i2c 设备当前连接到 Pi。仅使用三行代码就会出现 IndexError: string index out of range。为此,我可以继续调用该程序四到五次,然后它将 运行 毫无问题。我只是想知道是否有更好的方法来实现我正在寻找程序执行的操作而不会出现错误。

我对编码还是很陌生,所以提前感谢您的耐心等待。

如果你只是想用raspberry Pi测试I2C连接,那么你可以使用这段代码,这将帮助你一次性检测所有设备的所有I2C地址

import os
import subprocess
import time

p = subprocess.Popen(['i2cdetect', '-y','1'],stdout=subprocess.PIPE,) 
#cmdout = str(p.communicate())

for i in range(0,9):
  line = str(p.stdout.readline())

print(line)

基本上我是在 Python 中使用这个过程

执行 linux 命令

希望这对您有所帮助