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