我想从我的Arduino在Raspberry上的kivy中“提取”一些值,它通过无线NRF24模块连接。我正在使用this库和python wrapper
在纯Python中,代码运行得很好,现在我想把它集成到Kivy中。在
为此,我在zimmerwetter.py
中创建了两个函数:
一个用于设置无线电设备并返回无线电对象(应在应用程序启动后运行):
def radiosetup():
radio = RF24(RPI_BPLUS_GPIO_J8_22, RPI_BPLUS_GPIO_J8_24, BCM2835_SPI_SPEED_8MHZ)
# doing setup stuff...
return radio
另一个功能是向Arduino发送一个请求,它提供一些环境数据(温度、湿度等)。在
^{pr2}$getenvironment函数应该在以后每隔x秒从kivy应用程序调用一次,部分函数按照the kivy clock module中的建议使用
from zimmerwetter import *
class PyowmApp(App):
def build(self):
radio = radiosetup()
Clock.schedule_interval(partial(getenviroment,radio), 10)
错误是:
File "/home/pi/pyscripts/pyowm/zimmerwetter.py", line 83, in getenviroment
radio.stopListening()
AttributeError: 'float' object has no attribute 'stopListening'
我想知道为什么返回一个float对象,当我用help(radio)打印radio对象时,它返回class RF24(Boost.Python.instance)
,并且函数stoplistening()存在。在
Clock.schedule_interval
调用的函数将在通过partial
的参数之后接收dt
作为参数。函数的签名是getenviroment(self,radio)
,因此radio
将被分配给self
,而{相反,请使用
lambda
:我自己发现的,把计划表改成
成功了。在
相关问题 更多 >
编程相关推荐