Skocz do zawartości

Biblioteka FTP_Client.h dla ESP8266 - invalid conversion


Pomocna odpowiedź

9 minut temu, Wrona napisał:

strcpy(dane, wyniki.c_str()); 

 

A po jakiego schwantza tam tablica dane?

Przede wszystkim kompilator pruje się o strcpy (nic dziwnego, bo masz niezgodne typy), a nie o jakieś eftepy.

Dlaczego nie możesz po prostu napisać coś w stylu:

ftp.write(wyniki.c_str());

i wywalić te całe "dane" wraz z przyległościami w niebyt?

 

 

 

Ech... ja juz nie wiem co Ty chcesz od życia.

To co zamieściłeś bardzo zacnie się u mnie kompiluje.

Wersja bez zbędnej tablicy też się bardzo ładnie kompiluje:

void WyFTP()
{
	ftp.openConnection();
	ftp.changeWorkDir("/Pomiary/");
	String wyniki = "Zestaw wynikow:\n";                                   
	ftp.initFile(FTP_FileType_ASCII);
	ftp.appendFile("WynikiPomiarow.txt");
	ftp.writeData((const uint8_t *)wyniki.c_str(), wyniki.length());
	ftp.closeFile();
	ftp.closeConnection();
}

 

@ethanak 

23 minuty temu, ethanak napisał:

Ech... ja juz nie wiem co Ty chcesz od życia.

Tak, naprawdę to sułtańskiego haremu (w obiegowym tego słowa znaczeniu).

Natomiast wracając do potyczek z kodem. 

1. Kod od jakiego zacząłem jest taki a nie inny bo taki jest w przykładzie dołączonym do tej konkretnej biblioteki. Skopiowałem go by przetestować ale nie działa więc próbujemy dojść do tego dlaczego tak jest. W tym mi pomagasz i jestem wdzięczny.

2. To że się u Ciebie kompiluje to żaden argument bo zastanów się chwilkę. Po co miałbym Cię oszukiwać pisząc o błędach gdyby mi się kompilowało? Skąd wziąłbym opisy błędów kompilacji? Skoro ich nie rozumiem to raczej ich nie wymyśliłem. Po co miałbym robić to wszystko? Droczę się z Tobą? Podrywam Cię? To ważna informacja że u Ciebie się skompilowało ale to żaden argument za tym że u mnie też tak jest. Najwidoczniej gdzieś jest inny problem.

 

 

Aj waj, dopiero teraz zauważyłem...

U  Ciebie mamy:

C:\Users\Wrona\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0

Podczas gdy u mnie:

$ ls ~/.arduino15/packages/esp8266/hardware/esp8266/
2.7.1

Widzisz delikatną różnicę? Nie chodzi mi o slashe w drugą stronę...

  • Pomogłeś! 1
1 minutę temu, Wrona napisał:

Jak chcesz to potrafisz być miły

Zawsze jestem miły tylko czasem ludzie tego nie doceniają 🙂

1 minutę temu, Wrona napisał:

O to chodzi?

Dokładnie. Zresztą wersja 2.3.0 była chyba najbardziej zabugowana i nic dziwnego, że coś może nie działać...

Zrób aktualizację i daj znać co wyszło.

 

  • Pomogłeś! 1
(edytowany)

@ethanak Z płytka sobie chyba poradziłem po wszystko poszło gładko. Jednak gdzie szukać przyczyny że nie mogę zainstalować paczki ESP8266 powyżej 2.3.0 czy ten adres jest nieaktualny http://arduino.esp8266.com/stable/package_esp8266com_index.json ?  Coś zrobić ręcznie? Na razie reinstaluje całe arduino IDE bo podjąłem tyle różnorodnych prób że sam nie wiem co pozamieniałem na co i gdzie.

EDIT: Reinstalacja całości pomogła i mam już najnowszą wersje paczki dla ESp8266

Edytowano przez Wrona
(edytowany)

Dzisiejszy dzień mogę uznać za zły. Co to znowu jest? Czym teraz musze się zająć by ugasić nowy pożar?

c:/users/wrona/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\FTP_Client-master\example.cpp.o:C:\Program Files (x86)\Arduino\libraries\FTP_Client-master/example.cpp:11: multiple definition of `ftp'; sketch\TEST.ino.cpp.o:C:\Users\wrona\Desktop\TEST/TEST.ino:24: first defined here
c:/users/wrona/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\FTP_Client-master\example.cpp.o:C:\Program Files (x86)\Arduino\libraries\FTP_Client-master/example.cpp:6: multiple definition of `ftp_server'; sketch\TEST.ino.cpp.o:C:\Users\wrona\Desktop\TEST/TEST.ino:15: first defined here
c:/users/wrona/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\FTP_Client-master\example.cpp.o:C:\Program Files (x86)\Arduino\libraries\FTP_Client-master/example.cpp:7: multiple definition of `ftp_user'; sketch\TEST.ino.cpp.o:C:\Users\wrona\Desktop\TEST/TEST.ino:16: first defined here
c:/users/wrona/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\FTP_Client-master\example.cpp.o:C:\Program Files (x86)\Arduino\libraries\FTP_Client-master/example.cpp:8: multiple definition of `ftp_pass'; sketch\TEST.ino.cpp.o:C:\Users\wrona\Desktop\TEST/TEST.ino:17: first defined here
c:/users/wrona/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\FTP_Client-master\example.cpp.o: in function `setup':
C:\Program Files (x86)\Arduino\libraries\FTP_Client-master/example.cpp:3247: multiple definition of `setup'; sketch\TEST.ino.cpp.o:C:\Users\wrona\Desktop\TEST/TEST.ino:30: first defined here
c:/users/wrona/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\FTP_Client-master\example.cpp.o: in function `loop':
C:\Program Files (x86)\Arduino\libraries\FTP_Client-master/example.cpp:3306: multiple definition of `loop'; sketch\TEST.ino.cpp.o:C:\Users\wrona\Desktop\TEST/TEST.ino:38: first defined here
collect2.exe: error: ld returned 1 exit status
exit status 1
Błąd kompilacji dla płytki NodeMCU 1.0 (ESP-12E Module).

Rozumiem że gdzieś jest podwójna definicja ustawień ftp oraz pętli loop i setup. Kod dla Arduino taki jak poprzednio, bibliotek ta sama. Gdzie "grzebać"?

EDIT: Wywaliłem example z biblioteki FTP_Client i błąd zniknął

Edytowano przez Wrona

@ethanak Oczywiście nie obyło się jeszcze bez kilku drobnych problemów i kilku na tyle poważnych że przeszło mi przez myśl by "dać se spokój" ale wytrwałem i oficjalnie przyznaje że biblioteka FTP_Client dla ESP8266 zadziałała i na serwer FTP wysyła dane pomiarowe. Przypuszczam że w tej bibliotece nie zadziała ftp.appendFile() bez wcześniejszego ftp.newFile() w setapie (co jest zbędne np. w bibliotece dla FTP_Client dla ESP32). Jednak nie sprawdzałem tego poprzez analizę kodu a jedynie empirycznie metodą prób i błędów. 

Dzięki @ethanak nauczyłem się dziś stosować mójstring.c_str() co jest wartością dodaną i upraszcza mój karkołomny kod. Za to i za resztę raz jeszcze Ci dziękuje. 

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...