【发布时间】:2020-01-26 03:59:24
【问题描述】:
我不知道如何在一堆代码中使用正则表达式,也不知道如何正确编码。我试图查找教程,指南,一切。但我还是不明白,所以请帮我修复我的愚蠢代码。
工作总结,我正在尝试编写一个小程序,通过 pyserial 并在 microbit 的帮助下控制我的电脑键盘。例如,当按下按钮 A 时,microbit 通过 uart 将数据发送到我的计算机,我的 python shell 在接收到消息的最后尝试匹配它并执行相应的命令。
这是微比特的代码
from microbit import *
uart.init(baudrate=57600, bits=8, parity=None, stop=1, tx=None, rx=None)
while True:
if button_a.is_pressed():
uart.write("Up")
display.show(Image.ARROW_NW)
if button_b.is_pressed():
uart.write("Down")
display.show(Image.ARROW_S)
else:
display.show(Image.ASLEEP)
这是我的python端的代码
import re
import serial
import keyboard
serialPort = serial.Serial(port = "COM5", baudrate=57600,
bytesize=8, timeout=2, stopbits=serial.STOPBITS_ONE)
serialString = ""
while(1):
(serialPort.in_waiting > 0)
serialString = serialPort.readline()
wordsa = ("up")
wordsb = ("down")
if():
words = [word.lower() for word in wordsa if re.match('^[a-zA-Z]+', word)]
keyboard.press_and_release('up')
问题是我想重新匹配通过uart在serialString = serial.Port.readline()从microbit接收到的字符串或数据,如果microbit发送UP,我希望python匹配接收到的数据是UP或Down,然后按键盘键 UP 或 DOWN 分别。运行我的这个糟糕的代码后,没有出现任何错误,而且它根本不起作用。我认为这是一个非常愚蠢的问题,但请帮助我。这个问题已经在我脑子里烧了一个洞。
【问题讨论】:
-
if():在做什么?这总是返回 false 吗? -
好问题,我不知道那个xD
-
认为
if():实际上是if ():与if []:相同,所以总是返回false,所以永远不会进入其他代码。 -
既然 serialString 有你不应该有的消息:
if serialString =="Up": keyboard.press_and_release('up'),因为 Microbit 发送“Up”。不明白为什么需要正则表达式来检查“Up”与“Down”。 -
由于 readlines 中包含换行符,我们可以将其添加到“Up”检查中:
if serialString == "Up\n": keyboard.press_and_release('up')
标签: python micropython