Modyfikacja przykładu WebInterface Arduino

zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

iM@rek wstaw sobie ten kod od kolegi @lukfud bezpośrednio w kodzie programu bez dodatkowego pliku xxxx.h tylko zakomentuj lub usuń #ifndef READONLY_H_
#define READONLY_H_ i #endif i kod będzie Ci działał bez problemów. Ja tak zrobiłem zadziałało wszystko od strzała. Później chciałem sobie uporządkować trochę kod i dałem to do pliku nagłówkowego i mi się pojawił tez problem taki jak opisałeś. Ponieważ nie miałem czasu tego rozkminiać wróciłem do opcji wyjściowej i wszystko działa jak było zresztą widać na zdjęciu które dołączyłem.
iM@rek
Posts: 376
Joined: Thu Feb 09, 2023 1:25 pm

Post

klew wrote: Wed Aug 21, 2024 11:11 am
Dziękuję za wyjaśnienia. Trochę rozumiem, trochę muszę doczytać, żeby zrozumieć.

Ogólnie to niby jest prosta sprawa:
1. Mam szkic na bazie WebInterface.
2. W nim min. używam Inputów, numerycznych i tekstowych.
3. W tekstowych chcę przekazywać/ wyświetlać łańcuchy znaków podawane bezpośrednio lub jako zmienne w programie:
4a: bezpośrednio: "Jakiś tekst"
4b: jako zmienna: tekst = "Jakiś łańcuch tekstowy"
Ten łańcuch ma się pokazywać pod otwarciu configa WI w polu tekstowym definiowanym zgodnie z Inputem tekstowym.
Można go będzie zmodyfikować, wówczas zostanie zapisany do FRAM i użyty następnym razem.
No i nie umiem tego przeskoczyć.
Inputy numeryczne mi działają, umiem do pól przekazać wartości numeryczne z programu.
Do inputów tekstowych nie umiem:
1. np. zdefiniować łańcucha - zmiennej: "Jakiś łańcuch tekstowy" i
2. przekazać go do configa na stronie WI

Niby proste, a nie umiem. Prosi się użycie string, ale preferowany jest char, z którym nie umiem się dogadać.
iM@rek
Posts: 376
Joined: Thu Feb 09, 2023 1:25 pm

Post

lukfud wrote: Wed Aug 21, 2024 11:00 am
iM@rek wrote: Wed Aug 21, 2024 10:38 am
Podrzuć mi cały szkic.
W szkicu nie mam póki co niczego związanego z tym, o czym pisałem. Chciałem skorzystać z Twoich porad dla zrrr, ale nie umiem przekazać zmiennej do readonly.h.
A zmienna, jak piszę wyżej, jest dowolnym łańcuchem tekstowym, lub może być wpisana bezpośrednio w programie.
Utknąłem na przekazywaniu zmiennej do Readonly.h.
Przy okazji:
Próbowałem też w Readonly.h wpisać tekst zamiast zmiennej, ale też nie chciał tego przyjąć.

Code: Select all

...
sender->send("placeholder=\"");
sender->send("Ala ma kota");    <= podkreślał jako błąd
sender->send("\">");
Czy nie można wpisać tekstu bezpośrednio w Readonly.h?
User avatar
lukfud
Posts: 2480
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa
Has thanked: 13 times
Been thanked: 11 times

Post

iM@rek wrote: Wed Aug 21, 2024 7:59 pm
U mnie działa, u @zzrr działa, więc u Ciebie też musi.
Podrzuć mi szkic.
https://www.facebook.com/groups/supladiy
https://www.facebook.com/groups/suplazamel
https://www.facebook.com/groups/suplaauraton
https://smartnerzeczy.pl
iM@rek
Posts: 376
Joined: Thu Feb 09, 2023 1:25 pm

Post

zzrr wrote: Wed Aug 21, 2024 7:24 pm
Dzięki, wstawiłem bezpośrednio i działa.
Tyle, że... to jest działanie na zmiennej int, czyli liczbie, a ja chcę wrzucać łańcuch tekstowy typu: "Ala ma kota"...
Jak to dostosować?
Przy próbie użycia zewnętrznego Readonly.h - include - wrócił błąd deklaracji i przekazywania zmianej.

No i chciałbym móc edytować wartość (łańcuch znaków lub liczbę)
Jak zmienić deklarację sendera?
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

iM@rek wrote: Wed Aug 21, 2024 9:18 pm Tyle, że... to jest działanie na zmiennej int, czyli liczbie, a ja chcę wrzucać łańcuch tekstowy typu: "Ala ma kota"...
To co podał @lukfud to jest pole do wyświetlania tekstu. Czy tam dasz stringa czy int to działa bez żadnych dodatkowych operacji. Do edycji a później do zapisania w pamieci to masz inputy więc trochę nie jasne jest po co chcesz coś zapisywać do pamięci inputem a później to wyświetlać w tym polu i móc to w tym polu edytować żeby znów zapisać w pamięci. To jest coś przekombinowane. Zrób jeszcze raz to co dał @lukfud tylko bezpośrednio w kodzie i będzie tak jak poniżej. Z resztą wcześniej podawałeś dokładnie to co działa, a u Ciebie na razie nie, czyli...

Code: Select all

sender->send("placeholder=\"");
sender->send("Ala ma kota. Działa :-)");
sender->send("\">");
aaa.jpg

No a jeśli z jakiegoś powodu chcesz mieć to koniecznie w pliku nagłówkowym oddzielnie to spróbuj na samym początku pliku nagłówkowego dodać...

Code: Select all

#include <supla/network/html_element.h>
#include <supla/network/web_sender.h>
You do not have the required permissions to view the files attached to this post.
iM@rek
Posts: 376
Joined: Thu Feb 09, 2023 1:25 pm

Post

zzrr wrote: Thu Aug 22, 2024 2:17 pm

Code: Select all

(...)
sender->send("Ala ma kota. Działa :-)");
(...)
Faktycznie działa, dzięki, nie wiem, czemu wczoraj nie zadziałało, może jest za ciepło
Póki co, odpuszczam zewnętrzny readonly.h itd. Spróbuję przy okazji, dziękuję za podpowiedź.
Czyli:
Działa zmienna tekstowa wpisana bezpośrednio w cudzysłowach w linii sender->send("Ala ma kota");
Nie umiałem przesłać łańcucha tekstowego przez zmienną, ale przed chwilą udało mi się to zrobić tak:

Code: Select all

deklaracja: 
char oSFTWver2[] = "20240822-2023";
(...)
sender->send(oSFTWver2);
i działa ;-)
Czy tak należy to robić? Czy jakoś inaczej?
Last edited by iM@rek on Thu Aug 22, 2024 7:14 pm, edited 1 time in total.
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

iM@rek wrote: Thu Aug 22, 2024 6:05 pm

Code: Select all

deklaracja: 
char oSFTWver2[] = "20240822-2023";
(...)
sender->send(oSFTWver2);
i działa ;-)
Czy ta należy to robić? Czy jakoś inaczej?
za wiele chyba to nie wnosi...
Ale spróbuj tak, bo to chyba o to Ci chodzi... no jeśli mówimy o stringu. Bo jeśli masz gotową tablicę to tak jak pokazałeś faktycznie
Masz...
String tekst = "Ala ma kota";

sender->send("placeholder=\"");
sender->send(tekst.c_str());
sender->send("\">");
iM@rek
Posts: 376
Joined: Thu Feb 09, 2023 1:25 pm

Post

zzrr wrote: Thu Aug 22, 2024 7:09 pm sender->send(tekst.c_str());
Działa i przez char i przez String - dzięki, mam, czego chciałem.
Ze skompilowanego szkicu pobiera wersję kompilacji (SFTW verzija) i wstawia do okna Configa.
test1.jpg
Póki co, zostawiam jako AllInOne - bez osobnego pliku Readonly.h.
Następny punkt ToDo: odczytać i uzupełnić pola adresów termometrów DS18b20.
To powinno być dosyć podobne do poprzedniego punktu, ale zobaczymy ;-)
You do not have the required permissions to view the files attached to this post.
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

iM@rek wrote: Thu Aug 22, 2024 7:52 pm Działa i przez char i przez String - dzięki, mam, czego chciałem.
👍

Return to “Pomoc”