Forum: Mikrocontroller und Digitale Elektronik Kommunikation Webserver mit PIC24


von Christian (Gast)


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 :)

von Oldman (Gast)


Lesenswert?


von Christian (Gast)


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!

von leluno (Gast)


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-

von Christian (Gast)


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?

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.