Forum: Mikrocontroller und Digitale Elektronik uip string ausgabe


von maus (Gast)


Lesenswert?

Hallo,
ich möchte gerne den ADC Wert auf der Wbseite als string angezeigt 
bekommen  und nicht als Balken,aber so wie ich das jetzt hab bekomm ich 
kein string angezeigt.

könnte mir jemand weiterhelfen.

1
static unsigned short
2
generate_adc_status(void *arg) // Je nach Widerstandswert des Potentiometers wird der Balken länger oder kürzer auf der Webseite angezeigt
3
{
4
  adc_stat = 10;//adc1_convert(14);
5
  adc_stat= adc_stat/10;
6
  
7
8
9
  if(adc_stat<=10)
10
  {
11
    adc_stat=10;
12
  }
13
  else
14
  {
15
    adc_stat = adc_stat;
16
  }
17
  %2d  
18
  //sprintf(&buffer[0]," <img src=\"balken.gif\" width=\"%4d\" height=\"10\">",adc_stat);
19
sprintf(&buffer[0],"%2d",adc_stat);
20
21
22
  return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE,
23
      "%s ",  &buffer[0]);
24
}

von Karl H. (kbuchegg)


Lesenswert?

Das wundert mich nicht.

Das ...
1
  }
2
  %2d             // <<<----------------
3
  //sprintf(&buffer[0]," <img src=\"balken.gif\" width=\"%4d\"
... compiliert ja nicht mal.

von maus (Gast)


Lesenswert?

%2d
Das ist mir beim kopieren hier passiert

von kontext (Gast)


Lesenswert?

Ein bisschen Kontext wäre hilfreich.

von maus (Gast)


Lesenswert?

Ich wollte daa mir der adc wert auf der webseite als text angezeigt wird 
und nicht als balken.
so 10 meinte ich das

von Karl H. (kbuchegg)


Lesenswert?

maus schrieb:
> Ich wollte daa mir der adc wert auf der webseite als text angezeigt wird
> und nicht als balken.

Das ist ja alles schön und gut.
Aer um einen Text auf einem Webserver zu sehen muss man schon etwas mehr 
serverseitig auf die Reise bringen als nur den Text.
Dazu braucht es Code rundherum. WO ist dieser Code?

Das in buffer danach zb "10" drinnen steht, glauben dir hier alle. Aber 
kannst du den so einfach nach uip_appdata kopieren?
Das sieht mir dann etwas seltsam aus. Normalerweise wird ja eine 
Webseite in mehreren Porionen zusammengesetzt. Da gibt es einen Header, 
da gibt es Steuerungszeilen etc.
Letzten ENdes muss der Server an den Web-Client den Text
1
<html>
2
<body>
3
  Juhu
4
</body>
5
</html>
schicken, damit der dann den Text "Juhu" anzeigt.
Das drumherum muss wer generieren. Wo ist der COde dafür?

von maus (Gast)


Lesenswert?

ich habe diesen Webserver
Beitrag "ARM-Webserver auf uIP-Basis" läuft alles soweit.
Nur ich wollte halt den ADC wert nicht als Balken sontern als Text 
Darstellen.

von Karl H. (kbuchegg)


Lesenswert?

maus schrieb:
> ich habe diesen Webserver
> Beitrag "ARM-Webserver auf uIP-Basis" läuft alles soweit.
> Nur ich wollte halt den ADC wert nicht als Balken sontern als Text
> Darstellen.

OK.

Dann würde ich vorschlagen, du ersetzt mal deine Funktion durch
1
static unsigned short
2
generate_adc_status(void *arg) // Je nach Widerstandswert des Potentiometers wird der Balken länger oder kürzer auf der Webseite angezeigt
3
{
4
  sprintf(&buffer[0],"**JUHU**");
5
6
  return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE,
7
                  "%s ",  &buffer[0]);
8
}

und siehst nach, ob das in deinem Web Browser erscheint.
Wenn nicht: jeder Browser kann den HTML-Text anzeigen, den er vom Server 
bekommen hat. Dort siehst du hinein und siehst mal nach, was daran nicht 
HTML-gerecht ist, bzw. ob dein Text dort irgendwo aufscheint.

Und dann arbeitest du dich von hinten nach vorne durch.

von Karl H. (kbuchegg)


Lesenswert?

Ehe ich es vergesse.
An deiner Funktion kann man nichts ablesen.
Da wird ein Zahlenwert in einen Text gewandelt und in einen Buffer 
gestellt.
Soweit ist das alles richtig.

Aber ob die Funktion je aufgerufen wird und wann das passiert, das alles 
kann dir keiner sagen. Das weisst nur du.
Wenn sich im generierten HTML keine Spur deines Textes zeigt, obwohl das 
Drumherum alles richtig ist, dann wird wohl die Funktion überhaupt nicht 
aufgerufen.

von Stefan F. (Gast)


Lesenswert?

Es genügt nicht, den String in den Puffer zu legen. Danach musst du 
uip_send(uip_appdata,number_of_bytes) aufrufen, um den Puffer zu senden. 
Und danach musst du prüfen, ob der Empfänger das Paket quittiert. Wenn 
nicht, musst du wiederholen.

Protosockets kümmern sich um diese Wiedeholung automatisch:
1
PSOCK_SEND_STR_P(&app_state->socket,PSTR("Hello\n"));

Lies das: http://stefanfrings.de/avr_io/protosockets.html

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.