Что делать с adafruit_gfx_as

Tfried
Ср 14 марта 2018 г. 15:35
Ну, это не первый раз, когда возникает проблема (см. E.глин. здесь: ViewTopic.PHP?t = 1040): Некоторые драйверы графики в мире STM32Duino основаны на "adafruit_gfx_as", некоторые на восходящем "adafruit_gfx".

Насколько я понимаю, мотивы добавления adafruit_gfx_as были:
  • Раньше была некоторая несовместимость между ADAFRIT_GFX и STM32. Я понятия не имею, что это были, но, насколько мне известно, они решены в adafruit_gfx, к настоящему времени.
  • Adafruit_gfx_as добавил некоторые функции, esp. Для поддержания шрифтов, прежде чем у adafruit_gfx было что-то подобное. Однако к настоящему времени adafruit_gfx наблюдается много разработок, которая не была объединена с adafruit_gfx_as, включая (другую и более гибкую реализацию)..
Теперь последнее означает, что простое отказ от ADAFRIT_GFX_AS будет означать нарушение существующих проектов. Тем не менее, поддержание adafruit_gfx_as, как и сегодня, означает, что драйверы графики произвольно разделены на использование двух разных оснований, даже если действительный Разница между ними полностью не зависит от уровня аппаратного обеспечения.

Я думаю, что выход из этой ситуации может состоять в том, чтобы переработать adafruit_gfx_as на
  • Предоставьте класс с отличным именем класса "ADAFRIT_GFX_AS"
  • который получен из adafruit_gfx
я.эн. по сути: class Adafruit_GFX_AS : public Adafruit_GFX { public: Adafruit_GFX_AS(int16_t w, int16_t h); int16_t drawUnicode(uint16_t uniCode, int16_t x, int16_t y, int16_t size); int16_t drawNumber(long long_num,int16_t poX, int16_t poY, int16_t size); int16_t drawChar(char c, int16_t x, int16_t y, int16_t size); int16_t drawString(char *string, int16_t poX, int16_t poY, int16_t size); int16_t drawCentreString(char *string, int16_t dX, int16_t poY, int16_t size); int16_t drawRightString(char *string, int16_t dX, int16_t poY, int16_t size); int16_t drawFloat(float floatNumber,int16_t decimal,int16_t poX, int16_t poY, int16_t size); };

Mrburnette
Ср 14 марта 2018 г. 16:39
tfried:

Ух ты. Вы даете нам слишком много кредитов относительно Adafruit Graphics lib. Это было выбрано (я верю) в Arduino.CC Thread Days; Прежде чем мы оторвались от материнского форума.

Я подозреваю, что это было выбрано, потому что Ladyada, как правило, держит свои библиотеки пригодными для широкого выбора аппаратного обеспечения Arduino, в том числе Teensy. Сделать подростку на работу не сильно отличается от того, что привлечь STM32 работать. Поэтому я подозреваю, что мы использовали эту библиотеку, потому что это был путь наименьшего сопротивления.

STM32Duino делает упаковку нескольких сторонних библиотек в нашей загрузке ZIP: https: // github.com/rogerclarkmelbourne/ ... /библиотеки
И эти «портированные» библиотеки просто дать новому пользователю что -то, чтобы поиграть с тем, что работает ... Может быть, не работать, может быть, не эффективная память, может быть, даже с некоторыми икотками, но вы получаете мой дрейф ... Просто компилируйте без ошибок и в основном функционируйте.

Я не голос форума, есть гораздо более умные архитекторы программного обеспечения, чем эта старая корпоративная собака. Но, вообще говоря, я бы предложил, чтобы конечный пользователь отвечал за любые улучшения библиотек и ответственности за портирование. Когда пользователь выполняет такую ​​работу, усилия могут быть включены в каталог Core Library с помощью запроса на вытягивание GitHub. Просто поддерживать «основные» файлы достаточно работы, и даже сейчас у нас есть отставание от запросов на притяжение, которые были «проверены», но которые действительно должны быть полностью проверены... Многие вытягивания в прошлом должны были быть неразрушенными, а код свернулся.

Таким образом, итоговая линия, и это относится к любому читателю форума: если вы хотите перенести библиотеку, создать библиотеку или иным образом добавить значение через код или архитектуру или оба, то идите, чтобы отправиться в это... В конце усилий тщательно протестируйте и, возможно, опубликуйте и просите других на форуме проверьте свой код. Когда все выглядит хорошо, выпустите запрос на притяжение Роджеру.


Луча

victor_pv
Ср 14 марта 2018 г. 18:11
Я полагаю, что я впервые использовал библиотеку ADAFRIT_GFX_AS.
Причинами были те, которые вы и Рэй упомянули. В этот момент Adafruit Lib не имел поддержки дополнительных шрифтов, и ни это, ни как не были совместимы с STM32, поэтому предоставление объема работы было бы одинаковым, я решил перенести тот, который я нашел в какой -то форум или инструктаж.
Официальный с тех пор прошел долгий путь, поэтому, вероятно, не так уж много преимуществ при использовании как один.

Я обычно использую официальный Adafruit и работает отлично.
Что касается продвижения вперед, если бы один был поддерживается в GitHub, я бы посоветовал вам получить последнюю версию и попробовать ее. Если ему нужен какой -либо шанс, отправьте его вверх по течению, чтобы мастер поддерживал STM, а затем мы сможем удалить его из нашего репо и просто использовать официальный мастер.
Если это не в GitHub, то нарушение дополнительной функциональности в качестве дополнительного класса кажется хорошей идеей.

Tfried
Ср 14 марта 2018 г. 9:00 вечера
Спасибо за ваш отзыв. ADAFRIT_GFX_AS не на GitHub. На самом деле это, похоже, перестало существовать за пределами STM32duino.

Тем не менее, само изменение было почти так же легко сделать, как я мог надеяться: https: // github.com/rogerclarkmelbourne/ ... 2/тяга/461 . Мне вообще не нужно было прикасаться к реализации функций «как»!

Попробовал TFT_CLOCK_DIGITAL_ILI9341 (с использованием «в качестве»--функции) и STM32_GraphicStest (не используя »примеры« функции) из драйвера ILI934_STM, и оба, кажется, работают так, как ожидалось, насколько я могу судить. Дополнительная полезная нагрузка на шрифт AS добавляется только во Flash, когда используется одна из функций AS.

Больше тестирования на реальных проектах, безусловно, было бы неплохо, поэтому, если вы являетесь пользователем ADAFRIT_GFX_AS, пожалуйста, протестируйте это (для драйверов, отличных от ILI9341, просто измените базовый класс драйвера с ADAFRIT_GFX на ADAFRIT_GFX_AS).

victor_pv
Ср 14 марта 2018 г. 22:50
Замечательно. Мне нужно проверить, есть ли у меня какой -либо проект, который его использует, если да, даст вам некоторые отзывы.

импульс
Чт 15 марта 2018 г. 15:39
Мне очень нравится ваше решение, Tfried - он, похоже, предлагает лучшее из обоих миров (пересмотренная функциональность вверх по течению, которая в настоящее время отсутствует, и обратной совместимости с дополнениями GFX_AS). Я протестирую это на мои библиотеки, чтобы увидеть, возникают ли какие -либо проблемы. Спасибо

импульс
Пн 19 марта 2018 г. 15:00
Просто быстрое обновление: я проверил Tfried (Запрос на вытягивание № 461) со следующим:
  • Adafruit_gfx_as + Adafruit_ili9341_stm + Примеры/GraphicStest (Использует базовую функциональность GFX)
  • Adafruit_gfx_as + Adafruit_ili9341_stm + примеры/tft_rainbow_ili9341 (Использует функциональность "новой" GFX_AS)
  • Adafruit_gfx_as + Adafruit_ili9341_stm + моя библиотека графического интерфейса (Guislice) (Использует базовую функциональность GFX, как оригинальный шрифт GFX, так и Freefonts)
Все, кажется, работает нормально.
Для справки, в игре были следующие версии:
  • Adafruit_gfx_library (версия 1.2.3)
  • Adafruit_gfx_as от arduino_stm32 \ stm32f1 \ libraries \ adafruit_gfx_as (Legacy)
  • Adafruit_ili9341_stm от arduino_stm32 \ stm32f1 \ libraries \ adafruit_ili9341_stm (Legacy)

Rogerclark
Вторник 20 марта 2018 г. 20:25
Спасибо

Я тоже буду тестировать, так как у меня есть проект, в котором я сейчас использую эту библиотеку

Rogerclark
Солнце 01, 2018, 7:33
Я проверил это, и, кажется, работает нормально

@victor_pv

Вам удалось проверить это ?

victor_pv
Солнце 01, 2018, 19:29
Я еще не был, но кто -то еще опубликовал в пиаре, что он тоже проверил это. Я думаю, что это должно быть хорошо, чтобы пойти.

Rogerclark
Солнце 01, 2018, 21:39
Это не так’T вы вызываете какие -либо проблемы с моей конфигурацией тестового проекта, поэтому я думаю, что слияю сегодня

Rogerclark
SAT 07 апреля 2018 г., 21:53
Ребята

Извините за задержку

У меня было много вещей, чтобы слияние, а также некоторые другие проекты, не являющиеся STM32, я делаю на GitHub, которые должны были быть обновлены.

Была также некоторая путаница, которая была последней / лучшей пиар

Вы можете подтвердить, какой пиар должен быть объединен

Rogerclark
Солнце 08 апреля 2018 г., 3:33
Я слился https: // github.com/rogerclarkmelbourne/ ... 2/тяга/461

Что я думаю, было последней версией

Мой проект работает нормально, и он использует SPI для дисплея, а также другой модуль (NRF905), он также использует библиотеку UTOUCH, а также некоторые другие вещи, такие как The Adwange Timers, поэтому я думаю, что это реалистичный тест


Спасибо...

Maplecoos ​​и U8G2Lib