Skocz do zawartości

Zmienna w funkcji, użycie jej globalnie - AJAX


Pomocna odpowiedź

Napisano (edytowany)

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

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

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.

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

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