Python-树莓派:从popen结果中获取整数

1 投票
1 回答
520 浏览
提问于 2025-04-18 17:51

我在树莓派上用Python编程。
我想通过一个外部应用程序(Hipi)读取i2c加速度计的数值。
为此,我使用了Popen函数,代码是这样的:

Xprev=Popen(['hipi-i2c', "r", "1", "0x1D", "0x01"])    # read X value

运行后得到的结果是一个单一的数值(比如说100)。
如果我在Python中打印这个结果,或者在命令行中执行同样的命令,都是可以正常工作的。

我需要把这个值加到另一个值上,以便进行比较,看看加速度计是否在移动。但是如果我像这样进行加法:

S=10              # Threshold
Xpt=Xprev + S     # Xprev from previous read
Xnt=Xprev - S     # Xprev from previous read

结果显示:unsupported operand type (s) for +: 'Popen' and 'int',意思是说不支持把'Popen'和'int'类型的数值相加。

1 个回答

0

在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后把它放到另一个地方。这个过程就像是把水从一个桶倒到另一个桶一样。

有些时候,我们会遇到一些问题,比如数据的格式不对,或者我们想要的数据不在我们想要的地方。这就需要我们用一些工具来帮助我们解决这些问题。

在编程的世界里,有很多这样的工具和方法,可以帮助我们更好地管理和处理数据。比如,有些工具可以让我们更方便地读取数据,有些工具可以帮助我们把数据转换成我们需要的格式。

总之,处理数据就像是在厨房里做饭,我们需要准备好材料,选择合适的工具,才能做出美味的菜肴。

from subprocess import Popen, PIPE

cmdline = ['hipi-i2c', 'r', '1', '0x1D', '0x01']
result = Popen(
    cmdline
    , stdin=PIPE
    , stdout=PIPE
    , stderr=PIPE
)
output = result.stdout.readlines()
try:
    X = int(output[0])
except:
    pass

print X

撰写回答