Я использую script в Python для сбора данных с микроконтроллера PIC через последовательный порт со скоростью 2 Мбит/с.
PIC работает с идеальной синхронизацией на скорости 2 Мбит/с, а также последовательный порт USB FTSI отлично работает на скорости 2 Мбит/с (оба проверены с помощью осциллографа)
Im посылает сообщения (размер около 15 символов) около 100-150x раз в секунду, а число увеличивается (чтобы проверить, не потеряны ли сообщения и т.д.)
На моем ноутбуке у меня Xubuntu работает как виртуальная машина, я могу прочитать последовательный порт через Putty и через мой script (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 занимает так много времени, чтобы читать из последовательного порта до конца строки? Любая помощь?
Я хочу иметь это в режиме реального времени.
Спасибо