1

我是 Python 和一般编程的新手。我正在使用 Arduino 和 python 为 Spotify 制作遥控器。每当在 Arduino 上按下按钮时,都会通过串行发送一个字符。有一个 python 脚本监听这个字符,并根据这个字符执行一个命令。我遇到的问题是spotify.playpause()每次按下其各自的按钮时都能正常工作,但所有其他命令都需要多次按下按钮。我确信这不是 Arduino 的问题,因为我已经通过多个串行监视器确认字符发送正确,所以我认为这是 Python 循环的问题。

编辑:只是添加更多信息,似乎在 python 端和或serial.read()在Arduino 端的不同组合对问题没有影响serial.readlineSerial.printSerial.println

TL;DR 循环没有完全执行,它有什么问题。

这是代码:

import serial
from pytify import Spotify
spotify = Spotify()
connected = False

ser = serial.Serial("COM3", 57600)

while not connected:
    serin = ser.read()
    connected = True

while True:
    if ser.read() == '0':
         spotify.playpause()
    elif ser.read() == '1':
        spotify.volumeUp()
    elif ser.read() == '2':
        spotify.volumeDown()
    elif ser.read() == '3':
        spotify.previous()
    elif ser.read() == '4':
        spotify.next()
    else :
        pass
4

1 回答 1

3

您的问题是您不断为每个 if/elif 案例调用 ser.read ,因此每次比较失败时您都会丢弃该值。您只需调用 ser.read 一次,然后使用本地 var 比较该结果,如下所示:

c = ser.read()

if c == '0':
   spotify.playpause()
elif c == '1':
   spotify.volumeUp()
...
于 2012-08-25T05:51:35.527 回答