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

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