Python reload()在While循环中获取var

时间:2017-11-23 09:13:00

标签: python while-loop unicorn

刚开始使用Python,所以下面的代码可能非常差,但现在可以使用。

我有以下问题; 我正在使用Pimoroni Unicorn Hat(带帽子)用于Raspberry Pi,保持LED点亮的唯一方法是使用循环。要关闭和打开LED /动画,我创建了多个Python文件:

  • Control-Led.py(定义变量a的动画)
  • var.py(将我使用的参数写入变量a的.txt文件)
  • getvar.py(从txt文件中读取var)
  • var.txt(包含变量的文件)

我遇到的问题是我需要reload(getvar)才能从control-led.py中的txt文件更新变量,在第一个While True我有一个{{1}所以这没问题,但在第二个循环中我需要设置一个time.sleep(2)以获得led工作的动画。所以现在每0.01秒更新一次这个值..它导致高CPU,我认为这不是正确的方法。

你们可以帮帮我吗?

Control-led.py

time.sleep(0.01)

var.py

    import varget
import time
import math
import unicornhat as unicorn

unicorn.set_layout(unicorn.HAT)
unicorn.rotation(90)
unicorn.brightness(0.5)
width,height=unicorn.get_shape()

'''
VARS

0. Turn off
1. Turn on white light
2. Home Axis animation
'''


while True:
        reload(varget)
        time.sleep(2)

        if varget.a == 0:
                unicorn.off()
        elif varget.a == 1:
                unicorn.set_all(255,255,255)
                unicorn.show()
        elif varget.a == 2:
                i = 0.0
                offset = 30
                while varget.a == 2:
                        i = i + 0.3
                        for y in range(height):
                                for x in range(width):
                                        r = 0
                                        g = 0
                                        r = (math.cos((x+i)/2.0) + math.cos((y+i)/2.0)) * 64.0 + 128.0
                                        g = (math.sin((x+i)/1.5) + math.sin((y+i)/2.0)) * 64.0 + 128.0
                                        b = (math.sin((x+i)/2.0) + math.cos((y+i)/1.5)) * 64.0 + 128.0
                                        r = max(0, min(255, r + offset))
                                        g = max(0, min(255, g + offset))
                                        b = max(0, min(255, b + offset))
                                        unicorn.set_pixel(x,y,int(r),int(g),int(b))
                        unicorn.show()
                        time.sleep(0.01)
                        reload(varget)

varget.py

import sys

print sys.argv[1]
file = open("./var.txt", "w")
file.write(sys.argv[1])
file.close

0 个答案:

没有答案