Чтение серийных данных в реальном времени в Python

Я использую скрипт на Python для сбора данных с микроконтроллера PIC через последовательный порт на 2 Мбит / с.

PIC работает с идеальной синхронизацией на 2 Мбит / с, а также USB-последовательный порт FTDI отлично работает на 2 Мбит / с (оба проверены осциллографом)

Я отправляю сообщения (размером около 15 символов) примерно 100-150x раз в секунду, и число там увеличивается (для проверки потери сообщений и т. Д.)

На моем ноутбуке Xubuntu работает как виртуальная машина, я могу читать последовательный порт через Putty и мой скрипт (python 2.7 и pySerial)

Проблема:

При открытии последовательного порта через Putty я вижу все сообщения (счетчик в сообщении увеличивается на 1 на 1). Отлично!При открытии последовательного порта через pySerial я вижу все сообщения, но вместо того, чтобы получать 100-150x в секунду, я получаю их со скоростью примерно 5 в секунду (при этом сообщение увеличивается с шагом 1 на 1), но они, вероятно, сохраняются в некотором буфере, как при отключении питания ПИК, я могу пойти на кухню и вернуться, и я все еще получаю сообщения.

Вот код (я пропустил большую часть кода, но цикл тот же):

ser = serial.Serial('/dev/ttyUSB0', 2000000, timeout=2, xonxoff=False, rtscts=False, dsrdtr=False) #Tried with and without the last 3 parameters, and also at 1Mbps, same happens.
ser.flushInput()
ser.flushOutput()
While True:
  data_raw = ser.readline()
  print(data_raw)

Кто-нибудь знает, почему pySerial занимает так много времени, чтобы читать с последовательного порта до конца строки? Любая помощь?

Я хочу иметь это в режиме реального времени.

Спасибо

Ответы на вопрос(3)

Ваш ответ на вопрос