Python 使用pyserial从串行读取输出。

Python 使用pyserial从串行读取输出。,python,output,pyserial,Python,Output,Pyserial,我对pyserial有问题 首先,建立连接: ser = serial.Serial( device, baudrate=115200, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS ) 如果我按下一个键,会出现一个菜单(我看不到这个菜单,但我知道如果我按下“1”,会得到一个数据转储): 在我的代码中按“1”: cmd = "1" ser.write(cmd.encode('

我对pyserial有问题

首先,建立连接:

ser = serial.Serial(
device,
baudrate=115200,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS
)
如果我按下一个键,会出现一个菜单(我看不到这个菜单,但我知道如果我按下“1”,会得到一个数据转储):

在我的代码中按“1”:

cmd = "1"
ser.write(cmd.encode('ascii'))
因此,当我按下“1”时,序列结果是一个非常长的数字列表,如下所示:

816 81e 81e
828 820 820
816 816 81a
82a 826 824
816 80e 81a
81e 824 820
820 81a 80e
816 80e 81e
82a 81c 824
... and many other
我尝试在60秒后使用此命令读取输出: (60秒大约是滚动所有行的时间)

但在dumpfile中,我只有几行。
如何读取串行数据的总输出?

经过一个漫长的夜晚,我找到了解决方案

while 1:
    serial_line = ser.readline()
    dumpfile.write(str(serial_line))
    print serial_line #for debug
    if len(serial_line) == 0:
      break

增加睡眠?或者使用sentinal来等待某个序列来表示它完成了?我试图增加睡眠,但我认为这是缓冲区的问题。也许最好的解决办法是逐行阅读,但我不知道怎么读!!什么是ser.read_all()?pySerial API文档中没有列出它:
while(len(serial_line)!=0
)将是一个更干净的while循环,并且不再需要中断循环
time.sleep(60)
dumpfile.write(str(ser.read_all()))
while 1:
    serial_line = ser.readline()
    dumpfile.write(str(serial_line))
    print serial_line #for debug
    if len(serial_line) == 0:
      break