![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
loh |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 60 Регистрация: 11.5.2008 Пользователь №: 171 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Всем привет!
Задача такая, у меня есть датчик, типа линейного сканера, от него приходят данные представляющие собой двух байтные числа которые после некоторой математической обработки связанной с операциями сложения умножения деления вычитается превращаются либо в цвет точки. соответственно один пакет этих чисел это одна колонка пикселей на экране. Каждая новая колонка приходит на место старой, а вся картинка смещается на один пиксел в сторону. Проблема в том что частота прихода этих пакетов высокая - например 200 пакетов в секунду, Так вот! как организовать буфер для сохранения исходных значений с датчика, буфер с обработанными значениями для вывода на экран, как синхронизировать вывод с приёмом, что бы картинка смешалась плавно, без рывков? И как сделать быструю обработку исходных значений для преобразования их в цвет уже в офлайн режиме, когда данные берутся не с датчика, а с буфера исходных данных? :о |
|
|
![]() |
ViGOur |
![]()
Сообщение
#2
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Никаких циклов!
Пришли данные для буфера №1, если данных достаточно для обработки вторым потоком, отправляется сигнал, чтобы второй поток их получил. Второй поток, после того как получил сигнал обрабатывает данные и заполняет буфера №2, если данных достаточно для отрисовки, он отправляет сигнал основному потоку, который в свою очередь всё это отрисовывает. И никаких циклов, слипов и прочего. Просто обычная работа с сигналами и слотами и не более того! Или ты просто не понимаешь как работают потоки и сигналы и слоты в Qt? Имеется ввиду, тебе ведь просто нужно создать два потока, в которых создать по объекту класса обработчика, которые к тому же будут отправлять-принимать сигналы, а сами потоки в это время будут просто висеть и ожидать самих сигналов! Если нет данных, потоки ничего не делают и не нагружают систему, есть - работают в нужный момент... |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 11.6.2025, 15:28 |