Pyserial read loop需要对regis进行多个输入

2024-09-28 03:23:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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

编辑:仅仅添加更多信息,似乎python端的serial.read()或{}和Arduino侧的Serial.print或{}的不同组合对问题没有影响

循环没有完全执行,有什么问题吗。在

代码如下:

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

Tags: import命令readserial字符按钮spotifyarduino
1条回答
网友
1楼 · 发布于 2024-09-28 03:23:09

你的问题是你一直打电话ser.read公司对于每个if/elif情况,因此每次比较失败时都将丢弃该值。你需要打电话ser.read公司只进行一次,然后使用本地变量比较结果,如下所示:

c = ser.read()

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

相关问题 更多 >

    热门问题