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();
}

 

Link to post
Share on other sites

@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.

 

 

Link to post
Share on other sites

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
Link to post
Share on other sites
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
Link to post
Share on other sites
(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
Link to post
Share on other sites
(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
Link to post
Share on other sites

@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. 

Link to post
Share on other sites
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.