python+树莓派gpio无效语法

-1 投票
2 回答
3523 浏览
提问于 2025-04-18 12:17

我正在实习,需要做一个树莓派项目,这个项目要有一个按钮,可以用来加减1,并且可以重置为0,记录公司和现场的无事故天数。这里是我写的代码,但在“While True”那部分出现了无效语法的错误。我之前没有编程经验,所以任何帮助都非常感谢!

GPIO.setmode(GPIO.BCM)
GPIO.Setup (17, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
GPIO.Setup (18, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
GPIO.Setup (21, GPIO.IN, Pull_up_down = GPIO.PUD_DOWN)
GPIO.Setup (22, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
GPIO.setup (23, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
GPIO.Setup (24, GPIO.IN, pull_up_down = GPIO.PUD_DOWN
    while True:
        Try:
        If(GPIO.input(17)== 1):
            writeTexts(+1,-370,55)
            writeTexts(today +difference1,-100,-200)
        If(GPIO.input(18)== 1):
            WriteTexts(-1,-370,55)
        If(GPIO.input(21)== 1):
            writeTexts(0,-370,55)
        If(GPIO.Input(22)==1):
            writeTexts(+1,280,55)
        If(GPIO.input(23)== 1):
            writeTexts(-1,280,55)
            writeTexts(today +difference1,550,-200)
        If(GPIO.input(24)==1):
            writeTexts(0,280,55)
            sleep(.01)
    except KeyboardInterrupt
        exit()
GPIO.Cleanup ()

2 个回答

1

你在 while True 之前的那一行缺少一个最后的闭合 )

GPIO.Setup (24, GPIO.IN, pull_up_down = GPIO.PUD_DOWN

另外,TryIf 应该用小写字母。

1

确保在代码的最上面导入了 GPIO,time 以及其他需要的模块:

GPIO.setmode(GPIO.BCM)
GPIO.Setup (17, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
GPIO.Setup (18, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
GPIO.Setup (21, GPIO.IN, Pull_up_down = GPIO.PUD_DOWN)
GPIO.Setup (22, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
GPIO.setup (23, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
GPIO.Setup (24, GPIO.IN, pull_up_down = GPIO.PUD_DOWN) 

while True:
    try:
        if GPIO.input(17) == 1: # all `if` should be lowercase and the `try` 
            writeTexts(+1,-370,55) # don't need `()` in if statements.
            writeTexts(today + difference1,-100,-200)
        if GPIO.input(18) == 1:
            WriteTexts(-1,-370,55)
        if GPIO.input(21) == 1:
            writeTexts(0,-370,55)
        if GPIO.Input(22) == 1:
            writeTexts(+1,280,55)
        if GPIO.input(23) == 1:
            writeTexts(-1,280,55)
            writeTexts(today + difference1,550,-200)
        if GPIO.input(24) == 1:
            writeTexts(0,280,55)
            sleep(.01)
    except KeyboardInterrupt: # missing `:`
        exit()

GPIO.Cleanup ()

撰写回答