2017-04-19 20 views
1

我正在嘗試設置一個繼電器模塊,可以在其他python腳本中調用以激活繼電器。通過調用如何使用屬性調用外部參數

#!/usr/bin/python 

# Import required Python libraries 
import RPi.GPIO as GPIO 

# Use BCM GPIO references instead of physical pin numbers 
GPIO.setmode(GPIO.BOARD) 

# GPIO assigned relay pin numbers for peripherals 

light = 35 
waterPump = 33 
fanMotor = 31 

pinList = [light, waterPump, fanMotor] 

for i in pinList: 
    GPIO.setwarnings(False) 
    GPIO.setup(i, GPIO.OUT) 

def relayOn(peripheral): 
      GPIO.output(peripheral, GPIO.LOW) 

def relayOff(peripheral): 
      GPIO.output(peripheral, GPIO.HIGH) 

如果我要激活腳本內部繼電器:我創建了這個簡單的腳本調用relay.py

relayOn(light) 

腳本運行正常。但是當我嘗試從另一個python腳本運行腳本時,我的問題就會發生。比如我做了名爲relayTester.py測試文件:

#!/usr/bin/python 
import relay 

relay.relayOn(light) 

如果我運行此腳本,我得到一個錯誤:

NameError: name 'light' is not defined 

我的福利局問題道歉。我到處尋找,似乎無法找到答案。

+0

是否'relay.relayOn(relay.light)'工作? – JacobIRR

+0

哇,這工作!問這是如何工作的,是否太公平? –

+0

我貼出瞭解釋的答案 – JacobIRR

回答

3

你應該使用: relay.relayOn(relay.light)

這是因爲light在你relay模塊的上下文中定義一個全局變量。

或者,你可以這樣做:

from relay import relayOn, light 

然後只需使用:

relayOn(light) 
+0

這工作完美無缺,謝謝。我會盡快接受答案。 –

相關問題