В настоящее время я имею дело с графическим интерфейсом Qt, который мне нужно настроить для измерительного устройства. Устройство работает с картой захвата кадров, которая очень быстро захватывает изображения с линейной камеры. Обработка моего изображения, которая не является такой сложной, занимает 0,2 мс, а для отображения сигнала и результата обработки с помощью QCustomPlot требуется около 40 мс, что совершенно нормально. Помимо вывода GUI, обработанный сигнал также будет выводиться в виде аналогового сигнала устройством сбора данных NI.
Моя проблема в том, что я должен обновлять аналоговый сигнал с постоянной частотой и время от времени обновлять графический интерфейс.
Мой текущий подход или идея состояла в том, чтобы создать поток пула данных и два рабочих потока. Один рабочий поток получает данные от фреймграббера, обрабатывает их и обновляет пул данных. Второй рабочий поток обновляет аналоговый канал NI DAQ с определенной частотой около 2-5 кГц, заданной часами в NI DAQ устройстве. И поток GUI будет время от времени считывать пул данных, чтобы обновлять отображение сигнала с частотой около 20-30 Гц.
Я хотел использовать управление потоками Qt и механизм сигналов и слотов из-за его «простоты» и потому, что я уже работал с потоками в сочетании с Qt и его классами потоков.
Может быть, есть лучший способ, есть ли у кого-нибудь идея или какое-либо предложение? Возможно ли, что у меня проблемы с синхронизацией потоков?
Кроме того, возможно ли назначить один поток одному ядру ЦП на многоядерном ЦП, чтобы это ядро обрабатывало только этот единственный поток?