【问题标题】:Python Script for Raspberry Pi not running properlyRaspberry Pi 的 Python 脚本无法正常运行
【发布时间】:2014-01-20 02:02:10
【问题描述】:

我在使用前几天编写的 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()

现在我知道构造函数没有参数?

文件“door_controllerTEST.py”,第 47 行,在 主要()

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

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

TypeError: 这个构造函数没有参数

在我的 AuthToken 类中添加了额外的 _,它给了我一个错误,我的 pfio 尚未初始化。所以我添加了

import piface.pfio as pfio
pfio.init()

之后一切正常。

【问题讨论】:

    标签: python linux raspberry-pi new-operator


    【解决方案1】:

    类测试输入

    函数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()
    

    【讨论】:

    • 你的权利,我不小心把它放在那里,但即使在添加新行之后,什么也没有发生。它仍在运行,没有给我任何输出。
    • 尝试在if _name_ == _main_:中改成双下划线,你会得到一些输出:)
    • 在双 cmets 中添加,现在我至少收到了一些消息。我把它们放在上面的描述中。而且我不是将 self.id 定义为 id 还是我想念那个
    • 您还缺少 AuthToken 类的 init 中的双下划线,检查我的答案中的代码,应该可以工作。
    • 我添加了上面的描述,现在一切正常。既然是 python 的新手,就添加了这些额外的行和好事吗?我只是好奇
    猜你喜欢
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 2015-06-28
    相关资源
    最近更新 更多