簡體   English   中英

Raspberry Pi的Python腳本無法正常運行

[英]Python Script for Raspberry Pi not running properly

我在前幾天寫的python腳本上遇到了一些麻煩。 該腳本適用於我的rasbperry pi,它的GPIO引腳連接了數字接口。 該腳本的目的是測試並查看它是否將在5秒內解鎖機電鎖。 雖然當我運行腳本時沒有任何反應。 沒有記錄錯誤並且是python腳本的新手,不知道是什么問題。 任何建議或幫助將不勝感激。

我知道數字接口和樹莓派交互沒有問題,因為我可以使用以下命令手動運行python,並且一切正常。 鎖釋放,然后我可以將其關閉。 雖然當我運行腳本時沒有任何反應。

python
import piface.pfio
piface.pfio.init()
piface.pfio.digital_write(0, 1)
led0 = piface.pfio.LED(0)
led0.turn_off()

我的python腳本

#!/usr/bin/env python3
"""Door Lock: System to control an electric lock"""

import piface.pfio as piface
from time import sleep

class AuthToken:
    def _init_(self, id, secret):
        self.id=id
        self.secret.secret

class TestDoorController:
    def send_open_pulse(self):
        print "unlock the door"

class BasicAuthenticator:
    id = "Andrew"
    secretPassword = "1234"
    def check(self,token):
        print "checking input of '" + token.id + "', + password + : " + token.secret + ", against secret password'" + self.secretPassword +"'"
        result = (token.secret == self.secretPassword) & (token.id == self.id)
        print "authentication is: " + str(result)
        return result

class TestInput:
    def getInput(self):
        print "checking for input"
        authToken + AuthToken("Andrew","1234")
        return authInput

class DoorControllerPiFace:
    def send_open_pulse(self):
        piface.digital_write(0,1)
        sleep(5)
        piface.digital_write(0,0)

def main():
    authInput = TestInput()
    authenticator = BasicAuthenticator()
    doorController = DoorControllerPiFace()

    if(authenticator.check(authInput.getInput())):
        doorController.send_open_pulse()
    if _name_ == '_main_':

        main()

現在我知道構造函數沒有參數嗎?

main()中的文件“ door_controllerTEST.py”,第47行

在主if(authenticator.check(authInput.getInput()))中的文件“ door_controllerTEST.py”,第43行:

文件“ door_controllerTEST.py”,第30行,在getInput中返回AuthToken(“ Andrew”,“ 1234”)

TypeError:此構造函數不接受任何參數

在我的AuthToken類中添加了額外的_,這給了我pfio尚未初始化的錯誤。 所以我加了

import piface.pfio as pfio
pfio.init()

此后一切都在工作。

類TestInput

函數getInput(self):不返回任何內容(即,變量authInput為空)。

您可能要返回創建的令牌? return AuthToken("Andrew","1234")

類BasicAuthenticator

此類檢查self.idself.secretPassword但未設置。 您正在設置idsecretPassword

主要

您的主要函數也不會被調用, if __name__ == '__main__':帶有雙下划線。

class AuthToken:
    def __init__(self, id, secret):
        self.id=id
        self.secret=secret

class TestDoorController:
    def send_open_pulse(self):
        print "unlock the door"

class BasicAuthenticator:
    def __init__(self):
        self.id = "Andrew"
        self.secretPassword = "1234"

    def check(self,token):
        print "checking input of '" + token.id + "', + password + : " + token.secret + ", against secret password'" + self.secretPassword +"'"
        result = (token.secret == self.secretPassword) & (token.id == self.id)
        print "authentication is: " + str(result)
        return result

class TestInput:
    def getInput(self):
        print "checking for input"
        return AuthToken("Andrew","1234")

class DoorControllerPiFace:
    def send_open_pulse(self):
        piface.digital_write(0,1)
        sleep(5)
        piface.digital_write(0,0)

def main():
    authInput = TestInput()
    authenticator = BasicAuthenticator()
    doorController = DoorControllerPiFace()

    if(authenticator.check(authInput.getInput())):
        doorController.send_open_pulse()

if __name__ == '__main__':
    main()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM