Цветовая карта в реальном времени из массива 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);