读取串口输入
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]))
我有一个按钮盒通过串行端口适配器连接到 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]))