2016-04-06 2 views
0

У меня есть проблема с pyserialПрочитайте вывод из серии с помощью pyserial.

Во-первых, установить соединение:

ser = serial.Serial(
device, 
baudrate=115200, 
parity=serial.PARITY_NONE, 
stopbits=serial.STOPBITS_ONE, 
bytesize=serial.EIGHTBITS 
) 

Если я нажать клавишу меню появится (я не могу видеть это меню, но я знаю, что если нажать «1» получить дамп данных):

0=Cfg 
1=Dump 
2=Erase 
3=Cal 
In-> 

В моем коде нажмите '1':

cmd = "1" 
ser.write(cmd.encode('ascii')) 

S О, когда я нажимаю «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 секунд о времени прокрутить все строки)

time.sleep(60) 
dumpfile.write(str(ser.read_all())) 

Но в dumpfile у меня всего несколько строк. Как я могу читать общий вывод серийного номера?

+0

спать? или использовать подопечного, чтобы ждать некоторой последовательности, которая сигнализирует, что это сделано? –

+0

Я пытаюсь увеличить сон, но я думаю, это проблема с буфером. Лучшее решение, может быть, читается линейкой, но я не знаю, как это сделать !! – karmax

+1

Что такое ser.read_all()? Он не указан в документах pySerial API: https://pythonhosted.org/pyserial/pyserial_api.html – Neil

ответ

0

После долгой ночи я нашел решение!

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