libEmGUI / emGUI-arduino

emGUI library for ESP8266 arduino platform
15 stars 7 forks source link

emGUI for Arduino (stm32duino - STM32F103C8T6 Blue Pill) #5

Open NickNifontov opened 6 years ago

NickNifontov commented 6 years ago

Столкнулся с проблемой, возможно Вы сможете подсказать в чем проблема.

1)

Использую https://github.com/libEmGUI/emGUI-arduino.git

Платформа - Stm32Duino (http://wiki.stm32duino.com, https://github.com/rogerclarkmelbourne/Arduino_STM32)

в частности плата Blue Pill (stm32f103c8t6, http://wiki.stm32duino.com/index.php?title=Blue_Pill)

2) Графика прослойка Adafruit_GFX_AS, Adafruit_ILI9341_STM

https://github.com/rogerclarkmelbourne/Arduino_STM32/tree/master/STM32F1/libraries/Adafruit_GFX_AS

https://github.com/rogerclarkmelbourne/Arduino_STM32/tree/master/STM32F1/libraries/Adafruit_ILI9341_STM

Графика работает.

3) При попытке подключить #include

вылазить серия ошибок

Можете подсказать в чем проблема? в какой сторону копать?

warnings.txt

NickNifontov commented 6 years ago

Если в файле https://github.com/libEmGUI/emGUI-arduino/blob/master/src/emGUI.h

отключить

//#include "emGUI/emGUI.hpp"

то

#include

static xDraw_t LCD; static xInterface interface1; static xLabel mouseMonitor;

xWidget frame1; xWindow * window; xLabel label1;`

выдает такое

Arduino: 1.9.0-beta (Windows 10), Board: "Generic STM32F103C series, STM32F103CB (20k RAM. 128k Flash), STLink, 72Mhz (Normal), Smallest (default)"

LeGUI.cpp:19:8: error: 'xDraw_t' does not name a type

static xDraw_t LCD;

    ^

LeGUI.cpp:20:8: error: 'xInterface' does not name a type

static xInterface * interface1;

    ^

LeGUI.cpp:21:8: error: 'xLabel' does not name a type

static xLabel * mouseMonitor;

    ^

LeGUI.cpp:23:1: error: 'xWidget' does not name a type

xWidget frame1;

^

LeGUI.cpp:24:1: error: 'xWindow' does not name a type

xWindow * window;

^

LeGUI.cpp:25:1: error: 'xLabel' does not name a type

xLabel label1;

^

exit status 1 'xDraw_t' does not name a type

NickNifontov commented 6 years ago

если вместо

include "emGUI/emGUI.hpp"

инклудить

include "emGUI/emGUI.h"

то уже имеем только

LeGUI.cpp:26:8: error: 'xInterface' does not name a type

static xInterface * interface1;

    ^

exit status 1 'xInterface' does not name a type

romansavrulin commented 6 years ago

Нужно глянуть подробный вывод компилятора - как он подключает пути к инклудам (параметры -I) и было бы хорошо видеть папку скетча. Вывод можно включить в настройках ардуино

Если есть step-by-step инструкция как накатить на ардуино поддержку stm32 для платы, то возможно смогу проверить работу сам в свободное время

NickNifontov commented 6 years ago

emGUI_stm32.txt Создал тестовый проект, пустой . Его код в атаче

> #include <Arduino.h> 
> #include <emGUI.h>
> 
> static xDraw_t LCD;
> static xLabel * mouseMonitor;
> 
> xWidget frame1;
> xWindow * window;
> xLabel label1;
> 
> static xInterface * interface1;
> 
> void setup() { 
>   // NOP
> }
> 
> void loop() {
>   // NOP
> }

Также в атаче подробный вывод компилятора + скрин настройки платформы Arduino arduino compiler.txt

.

NickNifontov commented 6 years ago

Инструкция по установке stm32duino и emGUI на Ардуино выглядит так

  1. Скачать stm32duino тут https://github.com/rogerclarkmelbourne/Arduino_STM32 https://github.com/rogerclarkmelbourne/Arduino_STM32/archive/master.zip

  2. Распаковать . Папку назвать Arduino_STM32

  3. Скопировать папку в [Arduino sketches folder]/[hardware]/[Arduino_STM32] К примеру у меня путь выглядит так 2018-02-05 22 09 15

  4. Теперь копируем emGUI-arduino в папку Library 2018-02-05 22 10 54

  5. В файле library.properties нужно внести изменение чтобы при сборке не ругалось architectures=STM32F1

  6. В папку Documents\Arduino\libraries\emGUI-arduino\src скопировать файл gfxfont.h gfxfont.txt

  7. В файл Documents\Arduino\libraries\emGUI-arduino\src внести изменения

Строка 5 - #include //to add GFX to arduino's include path

Строка 13 - #include "emGUI/emGUI.h"

NickNifontov commented 6 years ago

При сборке проекта выбрать нужную Board как на скрине arduino

NickNifontov commented 6 years ago

emGUI-arduino.zip

Вот файл моей emGUI с фиксами.Нужно только распаковать

romansavrulin commented 6 years ago

@NickNifontov, Благодарю за подробный мануал. Будет полезно.

Анализ показал, что среда неправильно выставляет инклуды. По какой-то причине она считает, что запущена на маке при компиляции библиотеке и генерит следующий путь

"-I\\Mac\Home\Documents\Arduino\libraries\emGUI-arduino\src"

Думаю, что надо разбираться с тем, как среда подключает внешние библиотеки

"C:\Users\Nick Nifontov.NickNifontov-РџРљ\AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1/bin/arm-none-eabi-g++" -c -g -Os -w 
-DDEBUG_LEVEL=DEBUG_NONE -std=gnu++11 -MMD -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions 
-DBOARD_generic_stm32f103c 
-DVECT_TAB_ADDR=0x8000000 
-DERROR_LED_PORT=GPIOC 
-DERROR_LED_PIN=13 -w -x c++ -E -CC -mcpu=cortex-m3 
-DF_CPU=72000000L 
-DARDUINO=10900 
-DARDUINO_GENERIC_STM32F103C 
-DARDUINO_ARCH_STM32F1  
-DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG=1 
-DSERIAL_USB 
-DGENERIC_BOOTLOADER 
-DMCU_STM32F103CB  -mthumb  -march=armv7-m 
-D__STM32F1__ 
-DMCU_STM32F103CB  -mthumb  -march=armv7-m 
-D__STM32F1__ 
"-IC:\Arduino\hardware\Arduino_STM32\STM32F1\system/libmaple" 
"-IC:\Arduino\hardware\Arduino_STM32\STM32F1\system/libmaple/include" 
"-IC:\Arduino\hardware\Arduino_STM32\STM32F1\system/libmaple/stm32f1/include"                                                           
"-IC:\Arduino\hardware\Arduino_STM32\STM32F1\system/libmaple/usb/stm32f1" 
"-IC:\Arduino\hardware\Arduino_STM32\STM32F1\system/libmaple/usb/usb_lib" 
"-IC:\Arduino\hardware\Arduino_STM32\STM32F1\cores\maple" 
"-IC:\Arduino\hardware\Arduino_STM32\STM32F1\variants\generic_stm32f103c" 
"-I\\Mac\Home\Documents\Arduino\libraries\emGUI-arduino\src" 
"-IC:\Arduino\hardware\Arduino_STM32\STM32F1\libraries\Adafruit_GFX_AS" "\\Mac\Home\Documents\Arduino\libraries\emGUI-arduino\src\emGUI\Draw\Draw.c" -o "nul"
NickNifontov commented 6 years ago

С путями все нормально. Просто я работаю из под МАКа на Parallerls Desktop. Windows 10 стоит. Проблема точно не в путях.

NickNifontov commented 6 years ago

Я сейчас перемещу файлы чтобы проверить гипотезу с путями

NickNifontov commented 6 years ago

Файлы положу внутрь пакета Arduino_STM32

romansavrulin commented 6 years ago

С путями все нормально. Просто я работаю из под МАКа на Parallerls Desktop. Windows 10 стоит. Проблема точно не в путях.

Я сам часто пользую подобную связку - сижу на VMWare. Если параллелс не предоставляет какой-то системный ресолвер ссылок типа \MAC то дело в этом, т.к. сам компилер говорит, что не может найти тип, но он то в либе есть, значит инклудится что-то не то

NickNifontov commented 6 years ago

Переместил папку 2018-02-06 12 38 08 2018-02-06 12 38 41

Вот что выдает warnings.txt

NickNifontov commented 6 years ago

В каком файле описан *static xInterface interface1;** ?

NickNifontov commented 6 years ago

Найти не может именно xInterface

romansavrulin commented 6 years ago

Стоп, хороший вопрос. Это сборка примера из ардуино либы с ветки мастер? Если так, то он там еще поломан, тк мы активно пилим версию 2.0 и еще не успели его актуализироать.

xInterface был заменен на xWindowManager. Дефайн тут

Как это заинитить можно посмотреть в эмуляторе под винду

romansavrulin commented 6 years ago

В целом, полезно накидать UI в эмуляторе и позже перенести на платформу. Сборка под msvc15

NickNifontov commented 6 years ago

Это сборка примера из ардуино либы

NickNifontov commented 6 years ago

Буду вечером пробовать другую сборку. Отпишу

откуда лучше взять emGUI. тут ? https://github.com/libEmGUI/emGUI

или тут https://github.com/libEmGUI/emGUI-arduino/tree/master/src

romansavrulin commented 6 years ago

https://github.com/libEmGUI/emGUI-arduino/tree/master Точно рабочая и собирается под esp8266. Под St, скорее всего, потребуется доработка отображения картинок - они на esp берутся из встроенной ФС

romansavrulin commented 6 years ago

Починил сборку примера для ESP8266 842835464359d0af0860d96a187492de4443bd61, но проверить как работает не могу - нет под рукой платы

NickNifontov commented 6 years ago

Сенкс. Я детально проверю и через 1-2 дня отпишу.

NickNifontov commented 6 years ago

если исключить hpp файлы (там где обьявлены namespace emGUI) то ничего собрать не выходить.

а при подключении hpp не компилируется.

Замкнутый круг.

romansavrulin commented 6 years ago

@NickNifontov, компиляция этого примера сейчас ориентирована на ESP8266 или на эмулятор под винду. На других платформах возможны ошибки.

NickNifontov commented 6 years ago

жаль