首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在后台python中运行GPIO进程

在后台python中运行GPIO进程
EN

Stack Overflow用户
提问于 2017-07-09 06:52:48
回答 1查看 139关注 0票数 0

我使用Raspberry Pi 3和DHT11 (温度和湿度传感器)来获取周围的值。

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

这种延迟会导致整个图形用户界面的延迟。

将获取数据度量的延迟视为系统限制,我想知道是否可以在并行/后台(更新一个临时变量)中运行这个过程--它不会拖住整个GUI吗?

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

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-09 07:17:54

也许有一个更简单的解决方案。

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

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

代码语言:javascript
复制
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()不起作用时,才应该使用单独的进程(或线程)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44993824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档