我正在使用这些代码将变量从f1.py传递到f2.py,并且效果很好:
f1.py:
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(23, GPIO.IN)
state = GPIO.input(23)
f2.py:
from f1 import state
print state
我现在的问题是,当我将f2.py放入无限循环内时,变量状态不会更新。我什至尝试在f1.py中打印一些内容,以检查f2.py的“从f1导入状态”部分是否得到执行,但仅执行一次。
新的f2.py:
while True:
from f1 import state
print state
如何继续从f2读取f1中“状态”变量的新值?
答案 0 :(得分:1)
每次您想要状态疯狂时都重新加载模块。将状态代码放在f1.py中的函数中:
import f1
while True:
state = f1.get_state()
然后进入f2.py:
def get_state(channel=23):
state = GPIO.input(channel)
return state
您可以随时更改功能,以便检查不同GPIO通道的状态:
state = f1.get_state(23)
然后这样称呼它:
help("is.na")
答案 1 :(得分:0)
导入模块后,将不会再次执行该操作,只需使用内存中的引用即可,因此您必须重新加载模块才能从gpio获取新值。
如下所示,您可以在下一个FYI上进行调整:
while True:
from f1 import state
import sys
reload(sys.modules['f1'])
print state