在后台python中运行GPIO进程

2024-04-20 08:33:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我用树莓皮3和DHT11(温度和湿度传感器)得到周围的值。你知道吗

有时,当通过python模块访问传感器时,会出现2-5秒的暂停,直到数据被发送回RPI(以及用于显示结果的GUI)。当仅将数据打印到终端而不考虑GUI更新时,也会发生此问题。你知道吗

此延迟导致整个GUI暂停。你知道吗

将获取数据度量的这种暂停视为一种系统限制,我想知道是否有可能在并行/后台(更新一个temp变量)中运行这个过程—它不会暂停整个GUI吗?你知道吗

以下功能访问传感器并检索数据:

ht_data():
    h0,t0 = Adafruit_DHT.read_retry (11,4) # DHT module to obtain T&H 
    temp_var.set("%d"%t)  ## update StringVar
    hum_var.set("%d%%"%h) ## update StringVar
root.after(500, ht_data)

Tags: 数据datavarupdategui传感器温度temp
1条回答
网友
1楼 · 发布于 2024-04-20 08:33:41

也许有一个更简单的解决办法。你知道吗

正如您所看到的hereread_retry只是在重试之间使用time.sleep(),从GUI的角度来看,这确实是不可取的。你知道吗

因此,尝试使用read()而不是read_retry(),如果返回(None, None),则不要更新值。你知道吗

ht_data():
    h0,t0 = Adafruit_DHT.read(11,4)
    if h0 and t0:
        temp_var.set("%d" % t0)  ## update StringVar
        hum_var.set("%d%%" % h0) ## update StringVar
    root.after(2000, ht_data)

由于文档指出您只能每两秒钟读取一次,因此我增加了超时时间以匹配此值。你知道吗

只有当使用read()不起作用时,才应该使用单独的进程(或线程)。你知道吗

相关问题 更多 >