Skocz do zawartości

Arduino MEGA i BLYNK, LCD odchodzi do lamusa...


Pomocna odpowiedź

Ok, wlepiłem tego serialprinta i się zdumialem :-/. Problemem okazalo się to, że funkcja wysylająca na serwer wykonywała się w pętli kilka razy, raz po raz. Zresztą podobnie jak wysyłanie do Blynka, a ja się dziwiłem, że czasami wywala mnie z serwera blynka, a nie miałem chęci tego sprawdzić. Zrobilem wysyłanie zależne od zmiennej, tak by szło tylko raz. Problem z Blynkiem zniknął, zobaczymy jak będzie ze zwiechami esp...

Kto mi teraz wytłumaczy dlaczego wysyłanie w poniższym szkicu wykonywało się kilka razy zamiast raz:

void four(){
  lcd.setCursor(0,0);
  lcd.print("      PMS");
  lcd.setCursor(0,1);
  lcd.print("wykonuje pomiar");
  pms.requestRead();
  pms.readUntil(data);
  if(sekundPiec.available()){
    pm1=data.PM_AE_UG_1_0;
    pm2=data.PM_AE_UG_2_5;
    pm10=data.PM_AE_UG_10_0;
    storeData(pm1,pm2,pm10);
    Blynk.virtualWrite(35,"   ",pm1," ","ug/m3");
    Blynk.virtualWrite(36,"   ",pm2," ","ug/m3");
    Blynk.virtualWrite(37,"   ",pm10," ","ug/m3");
    Blynk.virtualWrite(38,pm1);
    Blynk.virtualWrite(39,pm2);
    Blynk.virtualWrite(40,pm10);
    wyslano = 1;
    lcd.clear();
    sekundPiec.restart();
    menu=FIVE;
  }
 }

Jest to funkcja wywoływana przez switch(menu),  czyli po wykonaniu wszystkich poleceń w if powinno od razu przejść do case(FIVE), a jednak wysyłało na serwer kilka razy... why??

ESP na razie bez zwiechy, długo już, to dobrze wróży. Przyczyną musiało byc to wielokrotne, w serii, wysyłanie na serwer.

Dzisiaj dołożyłem menu do mojej strony:

 

  • Lubię! 1

śliczne... a teraz samą klawiaturką poproszę 🙂

jak zrobisz to pokażę prosty trick, aby screenreader przeczytał nową wartość... 

a mówiłem, tłumaczyłem...

pierwsza zasada: nie rób javascriptem tego, co przeglądarka sama doskonale (czytaj: dużo lepiej) potrafi.

(edytowany)

znaczy, że jak jest zrobione przez js np.

$(). click(function{});

 

to już o sterowaniu klawiaturą mogę zapomnieć?? 

Edytowano przez SOYER

a jakim elementem jest ten, do którego click podłączasz?

jeśli to a, input czy button - nie ma problemu.

jeśli to div, span czy inne coś - na dziś umówmy się, że możesz.

tak z ciekawości - na czym znasz się najlepiej? będzie mi łatwiej porównywać...

(edytowany)

click podłączyć chcę do elementów a zawartych w div... 

najlepiej to wiem jak robić żeby się nie narobić 😉 organizacja procesów to mój konik... i samoloty bojowe :)) 

 

Edytowano przez SOYER

jeśli to a, to wystarczy zwrócić false z funkcji, aby zablokować domyślne zachowanie. wtedy zostanie wykonane to co masz w onclick, a przeglądarka nie wlezie w nowy adres.

jeśli masz w stylach nie tylko hover, ale również focus - przy nawigacji klawiaturą będziesz miał dokładnie ten sam efekt wizualny jak przy najechaniu myszą (pomijając ie, ale mówimy tu o przeglądarkach).

następną razą opowiem ci o samolotach bojowych i dlaczego jeśli pociągniesz te wajche do siebie to samolot leci do góry a nie w prawo.

14 minut temu, ethanak napisał:

jeśli to a, to wystarczy zwrócić false z funkcji, aby zablokować domyślne zachowanie. wtedy zostanie wykonane to co masz w onclick, a przeglądarka nie wlezie w nowy adres.

?? :/?? :/?? 

(edytowany)

No proste. Jeśli masz coś w stylu:

<a href="costam.html">Treść</a>

to po kliknięciu w "Treść" przeglądarka przejdzie do strony "costam.html".

Jeśli masz coś bardziej skomplikowanego, czyli np.

<a href="costam.html" onclick="zrobcos()">Treść</a>

przeglądarka wykona funkcję zrobcos() i przejdzie do strony "costam.html"

Jeśli natomiast masz:

<a href="costam.html" onclick="zrobcos(); return false">Treść</a>

przeglądarka wykona funkcję zrobcos(), ale nie wykona akcji domyślnej dla "a".

Teraz jeśli funkcja zrobcos() będzie zwracała wynik true albo false, będzie można sterować zachowaniem przeglądarki (czy ma przejść do strony czy nie):

<a href="costam.html" onclick="return zrobcos()">Treść</a>

Przy okazji: jeśli nie musisz (w Twoim przypadku nie musisz), nie dodawaj dynamicznie obsługi eventów tylko rób to w kodzie html - dużo łatwiej jest przekazać parametry, np:

<a href="costam.html" onclick="return zrobcos(this, 7, 'jakisnapis')">

O to mi chodziło...

 

Edytowano przez ethanak
(edytowany)

Ok, coś tam łapię, tylko dalej nie wiem co to ma wspólnego z klawiaturą;

dwa, jak wiesz, ja nie mam żadnych a href tylko za pomocą $(). click(function{}); łapię jakiś element a i kiedy wystąpi na nim click to coś tam robię;

trzy

33 minuty temu, ethanak napisał:

Teraz jeśli funkcja zrobcos() będzie zwracała wynik true albo false, będzie można sterować zachowaniem przeglądarki (czy ma przejść do strony czy nie):


<a href="costam.html" onclick="return zrobcos()">Treść</a>

ale u mnie nie ładujemy nowych stron, tylko podmieniamy zawartości. 

Druga rzecz my przecież zawsze chcemy zmienić po clicku cośtam, tylko chcemy klik wywoływać myszką i klawiaturą przez enter czy co tam.

 

Ja mam na razie ten problem, że naciskając tab nie skaczę po zawartości strony... potem dopiero będziemy myśleć o enterowym clicku... 

Edytowano przez SOYER

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