当与while 1一起使用时,如何在pyserial python中终止ser.read而不输入任何命令?
我正在尝试编写一个脚本,目前我正在直接使用ser.read()并打印值,但我想编写一个函数,在该函数中等待一段时间读取所有字符,然后退出循环。当前循环打印所有字符,但不会退出循环,我必须编辑并通过键盘单击使其退出。但我想要一个脚本,它读取并退出,用户不需要做任何事情。很抱歉,如果有一个noob问题,但是Python和Pyserial的新问题当与while 1一起使用时,如何在pyserial python中终止ser.read而不输入任何命令?,python,python-2.7,serial-port,pyserial,uart,Python,Python 2.7,Serial Port,Pyserial,Uart,我正在尝试编写一个脚本,目前我正在直接使用ser.read()并打印值,但我想编写一个函数,在该函数中等待一段时间读取所有字符,然后退出循环。当前循环打印所有字符,但不会退出循环,我必须编辑并通过键盘单击使其退出。但我想要一个脚本,它读取并退出,用户不需要做任何事情。很抱歉,如果有一个noob问题,但是Python和Pyserial的新问题 if(ser.isOpen()): try: def read(): ser.flushInput() while 1:
if(ser.isOpen()):
try:
def read():
ser.flushInput()
while 1:
try:
check = ser.read()
print check
except Exception:
print("Error")
else:
print("Port not open")
如果您想在退出之前等待一定的时间,请尝试以下方法。在本例中,代码将等待5秒钟
import time
def read():
ser.flushInput()
start_time = time.time()
while time.time() - start_time < 5:
try:
check = ser.read()
print check
except Exception:
print("Error")
导入时间
def read():
flushInput爵士()
开始时间=time.time()
while time.time()-开始时间<5:
尝试:
check=ser.read()
打印支票
除例外情况外:
打印(“错误”)
pyserial在\uuuu init\uuuu
中有一个read timeout
和一个read(size=n)
请参见:谢谢,我尝试过使用它,但它在Python2.7中不起作用,在Python3.x中也不起作用。它给出了一些其他错误,需要检查它是否有效(True):if(ser.inWaiting()>0):#如果传入字节正在等待从串行输入缓冲区数据读取_str=ser.read(ser.inWaiting()).decode('ascii')#读取字节并将其从二进制数组转换为ascii打印(data_str,end='')ThanksHi jgrant我正在使用上述函数,但它仍然停留在循环中,我无法摆脱它?除此之外,我还需要做哪些变通或更改?谢谢我猜它挂在ser.read()行上。它可能在等待一个字节被传输。尝试在创建ser时为其添加超时。如下所示:ser=serial.serial('COMX',timeout=1)感谢jgrant感谢您的帮助,使用timeout尝试它,如果没有,希望它能工作。我正在考虑使用此部分作为其工作def read():if(ser.inWaiting()>0):str=ser.read(ser.inWaiting())print(str)