питон, черчение и c api - PullRequest
       27

питон, черчение и c api

2 голосов
/ 18 октября 2011

У меня есть небольшая программа на C, которая непрерывно получает поток данных и отправляет его по UDP и в режиме реального времени на другой компьютер.Базовые рамки для того, что я изначально намеревался сделать, были заложены.Кроме того, однако, я хотел бы визуализировать в реальном времени полученные данные.Для этого я подумал об использовании Python и его различных библиотек печати.Мой вопрос заключается в том, насколько сложно было бы предоставить Python доступ к тому, что по сути является первым циклом буфера моей программы на Си.Для конкретности предположим, что в этом буфере 1024 выборки.Кажется ли разумной / возможной идея «позволить Python иметь непрерывный взгляд на динамический массив C»?Если нет, то какие варианты печати лучше всего подходят для этой проблемы?

Спасибо.

Ответы [ 2 ]

1 голос
/ 18 октября 2011

Вы можете легко слушать ваш UDP-порт со стандартным модулем socket . Примеры доступны.

В качестве первого шага ваши данные могут быть помещены в простой список Python, так как списки оптимизированы для добавления данных.Удаление первых элементов занимает гораздо больше времени, поэтому вы можете захотеть делать это только время от времени и в то же время наносить на график только последние 1024 (или любые другие) элементы списка.

Plottingзатем можно удобно сделать с помощью известной библиотеки Matplotlib : matplotlib.pyplot.plot(data_list).Поскольку вам нужно в режиме реального времени, вам могут пригодиться примеры анимации .

Если вам нужно оптимизировать скорость сбора данных, вы можете иметь (также известный) NumPy Библиотека манипулирования массивами напрямую интерпретирует данные из потока как массив чисел (Matplotlib может строить такие массивы) с помощью функции numpy.frombuffer() .

0 голосов
/ 18 октября 2011

Это возможно, но не слишком просто.

Вам следует ознакомиться с API и, возможно, взглянуть на некоторые реализации.

Если вы сделалитаким образом, вы можете предоставить функцию, которая не только дает вам представление о необработанном массиве, но, возможно, даже собирает его в правильном порядке и длине (если это кольцевой буфер).Это может быть очень удобно, так как вам все равно придется копировать данные.

...