读取串口输入

Reading serial port input

我有一个按钮盒通过串行端口适配器连接到 USB 端口。

按钮盒有5个按钮。我想做的是记录按下了什么按钮(以及何时按下)。到目前为止,我将重点关注什么按钮。该代码将用于 PsychoPy 实验。

到目前为止我正在做的是:

import serial
import serial.tools.list_ports as port_list
ports = list(port_list.comports()) # search for the devices
#for p in ports: print (p)

ser = serial.Serial('/dev/ttyUSB0', 19200, timeout=1)


if(ser.isOpen() == False): #open the serial port only if NOT open yet
    ser.open()

ser.flushInput() #erase all info in the box about previous button-presses

print("connected to: " + ser.portstr)

line = ser.read()
print(chr(line))
ser.close()

但是,如果我这样做,我会收到以下错误:

TypeError: an integer is required

如果我在按下按钮后检查 line,我会得到以下值:

'\x02'

值根据按下的按钮而变化:'\x02''\x03' 等。所以它似乎至少检测到按下了正确的按钮。

我尝试做的最后一件事如下。为了将字符串转换为整数,我尝试替换 '\x0':

line
a=str(line)
a.replace('\x0', "")
a

我收到以下错误:

ValueError: invalid \x escape

'\x02' 是包含一个字符且 (ascii/ansi/unicode) 值为 2 的字符串的转义代码。您的行变量长度为 1 个字符。尝试 len(line)

如果您想通过提取此字符的值来打印按钮编号,请尝试:print(ord(line[0]))