gpt4 book ai didi

python - Pyserial 读取循环需要多个输入来注册

转载 作者:行者123 更新时间:2023-11-30 23:41:18 29 4
gpt4 key购买 nike

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

编辑:只是添加更多信息,似乎 python 端的 serial.read()serial.readlineSerial.print 的不同组合Arduino 端的 Serial.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

最佳答案

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

c = ser.read()

if c == '0':
spotify.playpause()
elif c == '1':
spotify.volumeUp()
...

关于python - Pyserial 读取循环需要多个输入来注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12119021/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com