Цветовая карта в реальном времени из массива C++

Я занимаюсь разработкой программного обеспечения для сбора данных, которое хранит данные с встроенной карты и непрерывно наносит их на карту как производитель-потребитель.

То, что у меня уже есть, выглядит так:

Режиссер:

while(true){
    acquire(data);
    signal_consumer();
}

Потребитель:

while(true){
    wait_producer();
    data2file();
}

Данные - это массив, содержащий 1 сек. приобретения.

Теперь я хочу добавить еще одного потребителя, который выполняет некоторый фильтр (может быть, fft) и обновляет цветовую карту при каждом получении (каждый отфильтрованный массив данных будет строкой цветовой карты).

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

Я использую правильный инструмент для работы? Есть ли способ использовать массивы C++ для qwt? Если да, то как?

1 ответ

Решение

Существует множество инструментов для решения этой задачи, и, исходя из того, что вы описали, qwt определенно является хорошим кандидатом. Да, вы можете использовать векторы (то, что вы называете массивами C++) в qwt. Вот пример:

 QwtPlot plot;
 // ... setup plot to taste ...
 std::vector<double> x;
 std::vector<double> y;
 x.push_back(0.0);
 x.push_back(1.0);
 x.push_back(2.0);
 y.push_back(0.0);
 y.push_back(2.0);
 y.push_back(4.0);
 QwtPlotCurve curve("Plot");
 curve.setSamples(&x[0], &y[0], (int)x.size());
 curve.attach(&plot);

http://qwt.sourceforge.net/class_qwt_plot.html

http://qwt.sourceforge.net/class_qwt_plot_curve.html

Другие вопросы по тегам