查看: 6161|回复: 2

[求助] 树莓派python多线程编程求助

[复制链接]
  • TA的每日心情
    奋斗
    2016-3-27 16:08
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2016-3-27 16:37:02 | 显示全部楼层 |阅读模式
    分享到:
    小弟初接触树莓派,想给孩子做一个孵化小鸡的孵化箱。构想是用5个18b20温度传感器分布于箱子内不同位置读取箱内温度,根据读取到的温度来通过gpio引脚控制继电器线包,继而控制电热丝加热,或者控制风扇来降温。如果箱内温度在设定范围内,则保持恒温(不加热也不降温)。同时还有lcd1602用来显示孵化时间/剩余时间等,7段数码管组依次显示5个温度值,三色led显示加热/降温/恒温状态,以及定时写入web页,开启一个简单web server,可以通过电脑手机等远程查看状态。主控程序结构大概如下(见跟帖):

    1.读取温度2.判断读取到的温度是否在设定范围内,如果在的话保温,否则加热或降温3.将温度显示到数码管(共6个温度值,耗时6秒)4.goto 1

    初步的程序已经调试通过,基本运行正常,但发现一个致命的问题是:数码管显示子程序因为要每隔1秒依次显示5组温度和平均温度,所以这个子程序需要花费6秒的时间。在这个子程序6秒的执行过程中,加热或降温子程序已经持续运行了6秒,有可能会使温度大大超出设定范围。所以想要把这个耗时较多的温度显示子程序设为多线程并发执行,使得它不要阻塞主程序中的其他部分。我在网上看了不少关于python多线程的例子,也做了些试验,但一直也没能理出个头绪,所以还请eeboard的诸位大侠打个帮手,毕竟已经答应了孩子,而且孩子都给小伙伴们许出赠送小鸡的承诺了。火线求助!万分感谢!!!
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-3-27 16:08
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2016-3-27 16:40:00 | 显示全部楼层
    1. main():
    2.     while 1:
    3.         temp_lists=temp_get()//读取传感器的值到一个list
    4.         temp_avg=get_avg(temp_lists)//计算温度平均值
    5.         if (temp_avg>temp_max):
    6.             dis_hot() //若平均值大于设定上限,则持续降温
    7.         elif (temp_avg<temp_min):
    8.            hot() //若平均值小于下限,则持续加热
    9.        else:
    10.            keep_warming() //否则保温(不加热也不降温)
    11.        temp_display() //在数码管上依次显示5个传感器温度以及平均温度,每秒1个,共耗时6秒
    复制代码
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-3-30 07:49:53 | 显示全部楼层
    isAlpha 发表于 2016-3-27 16:40

    最简单的,分成俩个进程,把温度等数据存档到一个txt中,专门写一个display进程,循环显示这个txt中数据。至于多线程,看看其他人的讲解吧
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-25 17:30 , Processed in 0.122616 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.