kompilacja GUI Generic pod Arduino IDE

QLQ
Posty: 1844
Rejestracja: ndz wrz 03, 2017 9:13 am
Lokalizacja: Koszalin

marek.rz@poczta.fm pisze: sob paź 16, 2021 10:48 am Dokładnie te biblioteki mam teraz zainstalowane. A czy jest możliwe, że ten przykładowy kod, utworzony w styczniu 2020 r., był na innych starszych bibliotekach i teraz prawie po dwóch latach one się zmieniły i dlatego kod się nie kompiluje?
Jak chcesz skompilować dokładnie ten kod pod Airly kolegi Duch_ to napisz na priv to podeślę Tobie te stare biblioteki.
Im urządzenie jest prostsze tym dłużej i lepiej działa.
marek.rz@poczta.fm
Posty: 16
Rejestracja: czw wrz 09, 2021 5:07 am

Dzięki
marek.rz@poczta.fm
Posty: 16
Rejestracja: czw wrz 09, 2021 5:07 am

Witam, właśnie podstawiłem przesłane przez kolegę QLQ starsze biblioteki SuplaDevice i niestety kod się nie skompilował.
"Błąd kompilacji dla płytki Generic ESP8266 Module."
Ten sam błąd wychodził mi wcześniej przy próbie kompilacji innych kodów.
Nie mam pojęcia co robię nie tak....
Awatar użytkownika
klew
Posty: 3262
Rejestracja: czw cze 27, 2019 12:16 pm

Pokaż jaki masz błąd
marek.rz@poczta.fm
Posty: 16
Rejestracja: czw wrz 09, 2021 5:07 am

Cały skopiowany opis błędów nie mieści się w dopuszczalnej ilości znaków w poście. Wkleję więc fragment, nie wiem tylko czy dobry :o

Kod: Zaznacz cały

Arduino:1.8.16 (Windows 10), Płytka:"Generic ESP8266 Module, 80 MHz, Flash, Disabled (new aborts on oom), Disabled, All SSL ciphers
 (most compatible), 32KB cache + 32KB IRAM (balanced), Use pgm_read macros for IRAM/PROGMEM, dtr (aka nodemcu), 26 MHz, 40MHz, 
 DOUT (compatible), 1MB (FS:64KB OTA:~470KB), 2, nonos-sdk 2.2.1+100 (190703), v2 Lower Memory, 
 Disabled, None, Only Sketch, 115200"

Kod: Zaznacz cały

C:\Users\marek\Documents\Arduino\libraries\SuplaDevice\SuplaDevice.cpp: In member function 'void SuplaDeviceClass::iterate()':

C:\Users\marek\Documents\Arduino\libraries\SuplaDevice\SuplaDevice.cpp:1327:60: error: call of overloaded 'abs(long unsigned int)' is ambiguous

 1327 |   unsigned long time_diff = abs(_millis - last_iterate_time);

      |                                                            ^

In file included from c:\users\marek\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\cstdlib:75,

                 from c:\users\marek\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\stdlib.h:36,

                 from C:\Users\marek\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266/Arduino.h:27,

                 from C:\Users\marek\Documents\Arduino\libraries\SuplaDevice\SuplaDevice.cpp:19:

c:\users\marek\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\stdlib.h:74:5: note: candidate: 'int abs(int)'

   74 | int abs (int);

      |     ^~~

In file included from c:\users\marek\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\cstdlib:77,

                 from c:\users\marek\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\stdlib.h:36,

                 from C:\Users\marek\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266/Arduino.h:27,

                 from C:\Users\marek\Documents\Arduino\libraries\SuplaDevice\SuplaDevice.cpp:19:

c:\users\marek\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\bits\std_abs.h:79:3: note: candidate: 'constexpr long double std::abs(long double)'

   79 |   abs(long double __x)

      |   ^~~

c:\users\marek\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\bits\std_abs.h:75:3: note: candidate: 'constexpr float std::abs(float)'

   75 |   abs(float __x)

      |   ^~~

c:\users\marek\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\bits\std_abs.h:71:3: note: candidate: 'constexpr double std::abs(double)'

   71 |   abs(double __x)

      |   ^~~

c:\users\marek\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\bits\std_abs.h:61:3: note: candidate: 'long long int std::abs(long long int)'

   61 |   abs(long long __x) { return __builtin_llabs (__x); }

      |   ^~~

c:\users\marek\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\bits\std_abs.h:56:3: note: candidate: 'long int std::abs(long int)'

   56 |   abs(long __i) { return __builtin_labs(__i); }

      |   ^~~

"C:\\Users\\marek\\AppData\\Local\\Arduino15\\packages\\esp8266\\tools\\xtensa-lx106-elf-gcc\\3.0.4-gcc10.3-1757bed/bin/xtensa-lx106-elf-g++" -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ -D_GNU_SOURCE "-IC:\\Users\\marek\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2/tools/sdk/include" "-IC:\\Users\\marek\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2/tools/sdk/lwip2/include" "-IC:\\Users\\marek\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2/tools/sdk/libc/xtensa-lx106-elf/include" "-IC:\\Users\\marek\\AppData\\Local\\Temp\\arduino_build_702894/core" -c -w -Werror=return-type -Os -g -free -fipa-pta -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 -std=gnu++17 -MMD -ffunction-sections -fdata-sections -fno-exceptions -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000 -DNONOSDK22x_190703=1 -DF_CPU=80000000L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0 -DARDUINO=10816 -DARDUINO_ESP8266_GENERIC -DARDUINO_ARCH_ESP8266 "-DARDUINO_BOARD=\"ESP8266_GENERIC\"" -DLED_BUILTIN=2 -DFLASHMODE_DOUT -DESP8266 "-IC:\\Users\\marek\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2\\cores\\esp8266" "-IC:\\Users\\marek\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2\\variants\\generic" "-IC:\\Users\\marek\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2\\libraries\\SPI" "-IC:\\Users\\marek\\Documents\\Arduino\\libraries\\SuplaDevice" "-IC:\\Users\\marek\\Documents\\Arduino\\libraries\\ArduinoJson-6.14.0\\src" "-IC:\\Users\\marek\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2\\libraries\\EEPROM" "-IC:\\Users\\marek\\Documents\\Arduino\\libraries\\Adafruit_NeoPixel" "-IC:\\Users\\marek\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2\\libraries\\ESP8266WiFi\\src" "C:\\Users\\marek\\Documents\\Arduino\\libraries\\SuplaDevice\\network.cpp" -o "C:\\Users\\marek\\AppData\\Local\\Temp\\arduino_build_702894\\libraries\\SuplaDevice\\network.cpp.o"

Użycie biblioteki SPI w wersji 1.0 z folderu: C:\Users\marek\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\SPI 

Użycie biblioteki SuplaDevice w wersji 2.3 z folderu: C:\Users\marek\Documents\Arduino\libraries\SuplaDevice 

Użycie biblioteki ArduinoJson-6.14.0 w wersji 6.14.0 z folderu: C:\Users\marek\Documents\Arduino\libraries\ArduinoJson-6.14.0 

Użycie biblioteki EEPROM w wersji 1.0 z folderu: C:\Users\marek\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\EEPROM 

Użycie biblioteki Adafruit_NeoPixel w wersji 1.3.4 z folderu: C:\Users\marek\Documents\Arduino\libraries\Adafruit_NeoPixel 

Użycie biblioteki ESP8266WiFi w wersji 1.0 z folderu: C:\Users\marek\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\ESP8266WiFi 

exit status 1

Błąd kompilacji dla płytki Generic ESP8266 Module.
krycha88
Posty: 2701
Rejestracja: pt lis 16, 2018 7:25 am

marek.rz@poczta.fm pisze: ndz paź 17, 2021 8:31 am

Kod: Zaznacz cały

C:\Users\marek\Documents\Arduino\libraries\SuplaDevice\SuplaDevice.cpp: In member function 'void SuplaDeviceClass::iterate()':
C:\Users\marek\Documents\Arduino\libraries\SuplaDevice\SuplaDevice.cpp:1327:60: error: call of overloaded 'abs(long unsigned int)' is ambiguous
Masz dwa wyjścia:
1. kompilowanie kodu w wersjach poniżej 3.0.0
2. lub usunięcie abs w SuplaDevice.cpp czyli:
zamieniasz:

Kod: Zaznacz cały

unsigned long time_diff = abs(_millis - last_iterate_time);
na

Kod: Zaznacz cały

unsigned long time_diff = _millis - last_iterate_time;
marek.rz@poczta.fm
Posty: 16
Rejestracja: czw wrz 09, 2021 5:07 am

Po stokroć dzięki koledze Krycha88!!!!. Człek siedzi godzinami i kombinuje a tu wystarczy trzy literki usunąć ;) . A tak przy okazji czy przez tą modyfikację ominie mnie jakaś funkcjonalność skompilowanego programu?
Awatar użytkownika
lesny8
Posty: 2069
Rejestracja: pn gru 11, 2017 9:43 pm

Jak usunąłeś abs() to przy założeniu, że _millis będzie mniejsze od last_iterate_time, to dostaniesz wynik ujemny. Z abs() zawsze jest dodatni, nie ważne co od czego odejmujesz. Czy mniejsze od większego, czy większe od mniejszego :)
Awatar użytkownika
klew
Posty: 3262
Rejestracja: czw cze 27, 2019 12:16 pm

lesny8 pisze: ndz paź 17, 2021 9:51 pm Jak usunąłeś abs() to przy założeniu, że _millis będzie mniejsze od last_iterate_time, to dostaniesz wynik ujemny. Z abs() zawsze jest dodatni, nie ważne co od czego odejmujesz. Czy mniejsze od większego, czy większe od mniejszego :)
Jeśli oba odejmowane typy są "unsigned', to wynik odejmowania będzie zawsze dodani. Po zejściu poniżej 0, liczba się "przekręca".
Np.
unsigned char a = 0;
unsigned char b = 1;

unsigned char delta = a - b; // delta == 255
Awatar użytkownika
lesny8
Posty: 2069
Rejestracja: pn gru 11, 2017 9:43 pm

🤦‍ Unsigned
ODPOWIEDZ

Wróć do „GUI Generic”