【问题标题】:Controls computer keyboard through pyserial通过pyserial控制电脑键盘
【发布时间】: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


【解决方案1】:

感谢 DarryIG,Profile Link。他拯救了我的日子

如果像我这样的初学者只想在字符串上进行匹配。 您不需要使用正则表达式。您可以使用运算符 == 来完成,而 = 是赋值。

例如:

Game = ['Dota2', 'LoL']; #Games that you play
Like = ['Dota2', 'LoL']; #Games that your friend likes

if Game == Like:
    print ('True')
else:
    print ('False')

输出:True

注意:我知道我的回答很糟糕,但我只想回答这个问题,以防万一像我这样的人需要这些信息。感谢您的理解。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    相关资源
    最近更新 更多