Skocz do zawartości

Zmienna w funkcji, użycie jej globalnie - AJAX


tomeg

Pomocna odpowiedź

Witam,

Jestem w trakcie pisania programu i mam problem dotyczący użycia zmiennej, która występuje w funkcji, która wywoływana jest przez webserver - chciałbym tej zmiennej użyć w głównej pętli programu loop. Kod poniżej:

void setPWM() {
  String sPWMval = server.arg("PWMval");
  int iPWMval = sPWMval.toInt();
  analogWrite(14, iPWMval);
  server.send(200, "text/plane", sPWMval);
}

A tutaj część kodu znajdującego się na stronie html:

function sendData(PWM) {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
	document.getElementById("sPWMval").innerHTML =
      this.responseText;
    }
  };
  xhttp.open("GET", "setPWM?PWMval="+PWM, true);
  xhttp.send();
}

Chciałbym móc użyć zmiennej 'iPWMval' w głównej pętli loop. Sterowanie oczywiście jest za pomocą strony html w czasie rzeczywistym (AJAX). Czytałem różne materiały nt. referencji zmiennych aczkolwiek nie poradziłem sobie z problemem.

Edytowano przez tomeg
Link do komentarza
Share on other sites

Nie bardzo rozumiem co chcesz zrobić - użyć tej samej zmiennej w kodzie serwera i klienta? Napisz jaki efekt chcesz osiągnąć, będzie łatwiej.

BTW text/plain a nie text/plane - ja wiem że tak samo się wymawia, ale serwer nie musi się znać na niuansach wymowy.

A na przyszłość: użyj jquery, będzie łatwiej niż rzeźbić w javascripcie coś, co już dawno zostało wyrzeźbione.

  • Lubię! 1
Link do komentarza
Share on other sites

Chodzi o to, że w głównej pętli programu działa regulator PID i chciałbym użyć zmiennej, która znajduje się wewnątrz funkcji setPWM(), żeby zmienić jedną wartość w elemencie wykonawczym regulatora 🙂 tak, więc w funkcji setPWM() znajduje się zmienna, którą chciałbym 'przetransferować' do pętli głównego programu.

Link do komentarza
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

(edytowany)

Wstyd mi bo w pierwszej chwili jak pisałem kod to myślałem, że nie zadziała, a po Twoim poście tak zrobiłem i działa elegancko. Dziękuje za pomoc. Z AJAX'em napisałem, żeby było wiadome z czym pracuje - może by to pomogło w odpowiedzi na mój temat, alczkolwiek mój problem okazał się trywialny.

 

PS. Mógłbyś podesłać jakiś link z materiałem gdzie będzie opisane te jquery? Skoro mówisz, że będzie łatwiej to zagłębiłbym się w ten temat.

Edytowano przez tomeg
Link do komentarza
Share on other sites

16 godzin temu, tomeg napisał:

PS. Mógłbyś podesłać jakiś link z materiałem gdzie będzie opisane te jquery?

Bardzo prosto: https://jquery.com/

16 godzin temu, tomeg napisał:

Skoro mówisz, że będzie łatwiej

Przykład:

$("button").click(function(){
  $.ajax({url: "demo.php", success: function(result){
    $("#div1").html(result);
  }});
});

 

  • Lubię! 1
Link do komentarza
Share on other sites

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.