Микропроцессор в режиме реального времени RS-232 с использованием PySerial / Matplotlib?
Я новичок в мире Python, и мои навыки программирования довольно слабые, но яЯ пытаюсь найти способ использовать Python для отображения вывода из схемы ЭЭГ (используя схему OpenEEGhttp://openeeg.sourceforge.net)
Аналоговый выход усиливается и обрабатывается через АЦП (в микроконтроллере ATmega8) и преобразуется в RS232 с помощью MAX232.
Сигнал RS232 выглядит следующим образом:
Байт 1: значение синхронизации 0xa5
Байт 2: значение синхронизации 0x5a
Байт 3: версия
Байт 4: номер кадра
Байт 5: младший байт канала 1
Байт 6: канал 1, старший байт
Байт 7: младший байт канала 2
Байт 8: старший байт канала 2
...
Байты 9-16 предназначены для дополнительных электродных каналов, но данные не требуются, поскольку используются только первые два
...
Байт 17: состояния кнопок (b1-b4) I '
У меня есть некоторые базовые функции PySerial, но мне нужно найти способ использовать входящие данные, буферизуя их и нанося на график полезные значения в виде 2 осциллограмм в реальном времени (время против напряжения)
Обновление вопроса: я
я получаю код для печати с очевидными несколькими строками PySerial, но это 'тарабарщина Я'm пытается сократить данные до формата значений, которые затем могут быть нанесены на график. 17 байтов данных в настоящее время поступают со скоростью 256 кадров в секунду. (Два) канала состоят из 10 бит данных каждый (с 6 нулями, чтобы заполнить оставшиеся 2 байта). Они являются беззнаковыми, давая возможные значения от 0 до 1023. Они соответствуют значениям, которые должны быть нанесены как положительные и отрицательные, поэтому двоичное значение 512 соответствует графику нулевых (микро) вольт ....
Как мне прочитать входящий поток как 8-битный двоичный файл (удаляя данные, которые я нене нужно), затем объединить два соответствующих байта из каждого канала, который я хочу (возможно, удалив лишние 6 нулей при необходимости)?