Kommunikation Webserver mit PIC24

Gast #3544425
Lesenswert?

Hallo zusammen,

ich habe es geschafft dank Hilfe des Forums den TCP/IP Stack von 
Microchip mit dem MRF24 zu implementieren. Als Controller nutze ich 
einen PIC24E (auf dem USB Starterkit). Das Modul habe ich in den Soft Ap 
versetzt und ich kann über einen Webbrowser eine ganz einfache 
Internetseite aufrufen.

Mein nächstes Anliegen ist die Kommunikation zwischen Webserver und dem 
Controller. Beispielsweise möchte ich mir irgendwelche Analogen Ausgänge 
auf dem Browser anzeigen lassen und am besten als erstes einmal eine LED 
(beispielsweise auf RD0) auf dem Starterkit über einen Button auf dem 
Browser zu aktivieren.

Also einen BUTTON kriege ich noch hin, aber dann wird es schon eng. Wie 
sehen die grundsätzlichen Schritte aus, um dies zu realisieren?

Gibt es für PICs da irgendwo Beispiel Code etc.?

Über jegliche Hilfe wäre ich dankbar, vielleicht nicht immer nur von 
Stampede :)
Gast #3545240
Lesenswert?

Danke schon mal. Gibt es sowas auch für PICs. Oder hat einer einfach nen 
Code beispiel wie man vom Webserver aus LEDs am PIC steuern kann oder 
wie ich Variablen vom PIC am Webbrowser ausgeben kann.

Nur ein simples Beispiel, so viel Code kann es ja eigentlich nicht sein.

EIne simple Checkliste was zu tun ist würde mir auch schon helfen.

Bedankt!
Gast #3545479
Lesenswert?

bei URadig geht das so:

in die Webseite ein action-feld - z.B. - textfeld für cmd-Befehl 
einbauen:

"<FORM ACTION=\"http://www.leluno.selfhost.eu\"; METHOD=\"POST\" 
NAME=\"kktransfer\">"
 "<input name=\"VAR1STR\" SIZE=20>"




den buffer abfragen ob eine cmd-befehl gesendet wurde:
1
  
2
  uint8_t PORTA;
3
  //Einzelnes Postpaket (z.B. bei firefox)
4
  if(http_entry[index].http_auth && http_entry[index].post == 1)
5
  {
6
    PORT_tmp = PORTA;  // aktuellen Status einlesen
7

8
    for(a = TCP_DATA_START_VAR;a<(TCP_DATA_END_VAR);a++)
9
    {  
10
      //Schaltanweisung finden!
11
      /*      char abfr,abfr1,abfr2;
12
            abfr=*(eth_buffer+a);
13
            abfr1=(eth_buffer+a);
14
            abfr2=(eth_buffer[a]);*/
15

16
            if(eth_buffer[a]=='V'){//kk+
17
              if(eth_buffer[a+1]=='A'){
18
                if(eth_buffer[a+2]=='R'){
19
                  if(eth_buffer[a+4]=='S'){
20
                    if(eth_buffer[a+5]=='T'){
21
      //+++++++++++++++ VARxSTR gefunden +++++++++++++++++
22
              u32 zl=0;
23
              while((eth_buffer[zl+a+8])!='&'){
24
              resultVar[zl]  =eth_buffer[zl+a+8];
25
              zl++;
26
              }
27
              resultVar[zl]='\0';
28
              timer_Anzeige=15;set_f(fANZEIGE);
29
              lgw(2,1,checkVar);lw(": ");lw(resultVar);
30
      //++++++++ cmd ++++++++++++
31
              if(eth_buffer[a+8]=='c'){
32
                if(eth_buffer[a+8+1]=='m'){
33
                  if(eth_buffer[a+8+2]=='d'){
34
                    if(eth_buffer[a+8+3]=='_'){
35
                      lw(" COMMAND");
36
//hier cmd-Befehl auswerten
37
              }}}}
38
      //-------- cmd ------------
39

40
      //--------------- VARxSTR gefunden -----------------
41
            }}}}}//kk-
Gast #3545564
Lesenswert?

Danke leluno:

ich habe mal folgenden HTML Text geschrieben, die einfach nen BUT 
definiert:
1
<html>
2
<head>
3
<title>Klick-Buttons definieren (Bild)</title>
4
</head>
5
<body onload="newAJAXCommand('status2.xml');">>
6

7
<h1>LED1</h1>
8

9
<form action="button.htm">
10
  <div>
11
    <button name="Klickmich" type="button"
12
      onclick="newAJAXCommand('leds.cgi?led=1');">
13
      <p>
14
        
15
        <b>LED1 toogeln</b>
16
      </p>
17
    </button>
18
  </div>
19
</form>
20

21
</body>
22
</html>


Aus einer Beispieldatei habe ich die Leds.cgi.
Da steht nix anderes drin als:
1
Success! ~led(0)~

In der Status2.xml:
1
<?xml version="1.0" encoding="utf-8"?>
2
 
3
 <response>
4
   <scan>~scan~</scan>
5
  <ver>~fwver~</ver>
6
  <count>~bssCount~</count>
7
  <ssid>~ssid~</ssid>
8
  
9
  <bss>
10
    <valid>~valid~</valid>
11
    <name>~name~</name>
12
    <privacy>~privacy~</privacy>
13
    <wlan>~wlan~</wlan>
14
    <strength>~strength~</strength>
15
  </bss>
16
  
17
  <led0>~led(0)~</led0>
18
  <led1>~led(1)~</led1>
19
  <led2>~led(2)~</led2>
20
  <led3>~led(3)~</led3>
21
  <led4>~led(4)~</led4>
22
  <led5>~led(5)~</led5>
23
  <led6>~led(6)~</led6>
24
  <led7>~led(7)~</led7>
25
  <btn0>~btn(0)~</btn0>
26
  <btn1>~btn(1)~</btn1>
27
  <btn2>~btn(2)~</btn2>
28
  <btn3>~btn(3)~</btn3>
29
  <pot0>~pot~</pot0>
30
 </response>

Kann mir jemand der mit dem TCP/IP Stack von Microchip nen Webserver 
realisiert hat was es mit dem newajax auf sich hat und kann mir den 
groben Ablauf erklären?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren