Adrift, а как нарисовать не-вертикальную и не-горизонтальную линию можно? Только по точкам... Брезенхемом или другим алгоритмом (но брезенхем быстр и целочислен)... Другого пути нет.
А графики я рисую почти всегда линиями, кстати. От одной точки к другой.
Но с учетом того, что пределы графика редко когда совпадают с областью вывода - сначала все данные обрабатываются и укладываются в массив размерностью по ширине поля вывода.
Далее ищется мин/макс для масштабирования. Далее масштабирование можно делать сразу при выводе, либо прогнать по массиву.
Если точек данных меньше, нежели столбцов в области вывода - вывод растягивается. Ну и далее линии от первой точки ко второй, от второй к третьей и т.д.
В случае TFT, если ОЗУ позволяет, проще "отрисовать" график в каком то буфере, а потом выплюнуть весь буфер в область графика. Но тут уже надо смотреть, что будет быстрее.
shonty писал(а):Хотя вам наверное пофиг) Вы же на заказ кодите, а я для себя)
На заказ я консультирую тупых юзеров по работе в учетной системе, да правлю/пишу код на PLSQL.
А радиолюбительство - это хобби. Если на заказ что то получится сделать - хорошо. Но это сейчас стало достаточно редко...
shonty писал(а):Как вы относитесь к тачскринам на этих дисплеях?
Вполне нормально. Но после емкостных тачей на телефонах, когда там еще всякие покрытия олеофобные, резистивный пластмассовый тач возвращает меня в эпоху палмтопов со стилусами. Надо не прикасаться, а нажимать - не тач-скрин, а пуш-скрин))). И засирается он сильно.
А в остальном - волне себе норм. Опрос тача делается на SPI с медленной скоростью (500кГц, например), его можно сделать на машине состояний и на прерывании от SPI.
Минус тача в том, что его координаты никак не соответствуют координатам в дисплее. Нужно делать калибровку хотя бы по двум точкам диагональным, а лучше по 4м или по 9.
А дальше все просто. На экран добавляются контролы - это могут быть метки, кнопки, чеккеры, радиобатоны... При добавлении контрола задается его реакция на нажатия, области нажатий...
Далее рисовальшик рисует эти объекты на дисплее. Старт опроса тача идет по сигналу нажатия от него, дальше вычисляются координаты нажатия. После получения координат идет перебор экранных объектов - если нажатие попадает в область нажатия какого то из объектов - генерируется событие "нажатие" с номером объекта и номером его области нажатия. Либо сразу колбек на обработчик нажатия для конкретного контрола. Если никуда не попало - то нажатие игнорируется.
Но вот честно, на асме я б это не рискнула делать. Асмовые вставки для оптимизации обмена с дисплеем - да, можно. Ибо обмен - бутылочное горлышко при выводе графики. А остальное все - ЯВУ. Это проще и быстрее. А с моим подходом к абстракции от железа - даже легко переносимо между разными МК. И достаточно легко - между разными семействами МК.