Полная версия этой страницы:
Логические экраны
uragan90
Dec 8 2013, 16:35
Друзья, здравствуйте!
Сразу извенюсь за грамматические ошибки в тексте.
Есть такой вопрос
У меня есть функция вывода пикселя на экран
pixel(x,y,color); и на ней организовано вся библиотека рисования приметивов на TFT димплее.
У меня встала задача смешения двух изображений при выводе на экран, точнее сетки и нарисованного на ней сигнала с ацп.
Экран мигает жутко!
У меня родилась идея смешения нескольких изображений в месте и вывода их на физический экран.
Идея в следюющем, создать структуру некого поля регистрации, а в частности нескольких логических экранов так чтоб выше описанная функция приняла вид
pixel(x,y,color,disp1);
Тоесть создать логический экран и функция вывода бы решала что выводить на физический экран, сигнал одного из каналов ацп либо сетку пробегая курсором по экрану регистрации.
Подскажите как проще и без затратно решить проблему!
Сам я вижу такой выход
struct pixel {
int x,y;
union disp {
disp1, disp2, disp3;
}
}
Помогите идеей или если это лажа оградите от лишнего труда :-)
lekintr
Dec 8 2013, 16:55
Цитата(uragan90 @ Dec 8 2013, 20:35)

У меня есть функция вывода пикселя на экран
попробуйте смешать данные до вывода на экран.
Есть большая вероятность, что мигают сами по себе либо кривая библиотека, либо кривой дисплей, это далеко не редкость.
uragan90
Dec 8 2013, 19:42
Plain,
В отдельности сетка и сигнал не мигают, мигают лишь тогда когда я вывожу сетку и потом сигнал, видимо изза того что изображения не смешаны, уначале рисуется сетка потом сигнал!
Мне же нужно както смешать воедино
Если Вы попеременно выводите два разных кадра, то разумеется будет мигать, как и любой стереотелевизор. Можете засинхронизировать с Вашим экраном какие-нибудь стереоочки — мигать перестанет и сетка смешается с синусом в пропорции 50%. Вот ровно то же самое (т.е. хотя бы среднее арифметическое) Вам и надо сделать программно, на ходу, и безо всяких буферных памятей.
Обычно чтоб не мигало имеют минимум две страницы, рисуют в неактивную страницу, все логические операции делают при собственно рисовании, по окончании рисования меняют местами указатели на страницу вывода и страницу отображения. Для синхронизации, если отображение происходит в прерывании, там имеется своя локальная копия указателя страницы вывода. Если нет времени на полную очистку экрана перед заполнением (похоже на Ваш случай)- заводим отдельно буфер для вывода пар точек графика, потому что при обновлении с очисткой будет проще выводить эти пары точек XORом
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.