- Labornetzteil AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 182

Thema: Diskussion zum RP6 M256 WIFI Modul

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    40
    Beiträge
    1.516
    Ja da die Kommandobefehle ja prüfen ob die Kommandos richtig übertragen werden kann sich das in die Quere kommen.
    Kommt da nicht das richtige zurück gibts Fehlermeldungen.

    Wie schon dabei steht, das ist der simpelst denkbare Webserver damit es ein schön übersichtliches Beispiel bleibt.
    Wenn man den ganzen Kram den ein normaler Webserver sonst noch so kann braucht, muss man schon etwas mehr Aufwand treiben.


    MfG,
    SlyD

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Das macht echt Spass mit dem Loader und seinen abgedockten Terminals zu spielen.

    Auf Basis des Webserverbeispiels eine LED-Ansteuerung mit dem Browser:

    Code:
    // LEDs mit dem Browser ansteuern                                                mic 22.7.2012
    
    #include "RP6M256Lib.h"
    
    char c, kommando=0;
    
    void send_html_page(void);
    
    int main(void)
    {
    	initRP6M256();
    	
    	writeString_P("\n\nsetLEDs() mit dem Browser                            22.7.2012 mic\n\r");
    
    	// Make sure WLAN Module Packet size / buffer size and flush timer is OK
    	enter_cmd_mode_WIFI();
    	issueCMD_WIFI("set comm size 1024","AOK");
    	issueCMD_WIFI("set comm time 10","AOK");
    	leave_cmd_mode_WIFI();
    	
    	while(true)
    	{
    		if(getBufferLength_WIFI()) // Daten vom Browser empfangen?
    		{
    			c=readChar_WIFI();
    			writeChar(c);  // ja, dann Daten zum seriellen Terminal senden
    			
    			if(c == '?') { kommando=1; setLEDs(0); } // und ab dem ? interpretieren
    
    			if(kommando) switch(c)
    				{
    					case 'a': setLED1(1); break;
    					case 'b': setLED2(1); break;
    					case 'c': setLED3(1); break;
    					case 'd': setLED4(1); break;
    				}
    
    			if(c == 13) // Datenende
    			{
    				if(kommando) kommando=0; else setLEDs(0); // LEDs aus, wenn kein ? gefunden
    				send_html_page();
    			}
    		}
    	}
    	return 0;
    }
    
    void send_html_page(void)
    {
    	// Send HTTP Header:
    	writeString_P_WIFI("HTTP/1.0 200 OK\r\n");
    	writeString_P_WIFI("Content-Type: text/html\r\n");
    	writeString_P_WIFI("\r\n");
    
    // Send HTML Content:
    writeString_P_WIFI("<html><head><title>RP6-WIFI: Leds ansteuern</title></head><body>\n");
    
    writeString_P_WIFI("setLeds():\n");
    writeString_P_WIFI("<form action=\"http://169.254.77.3:2000\" method=\"get\">\n");
    
    writeString_P_WIFI("<input type=\"radio\" name=\"SL4\" value=\"d\">&nbsp;\n");
    writeString_P_WIFI("<input type=\"radio\" name=\"SL3\" value=\"c\">&nbsp;\n");
    writeString_P_WIFI("<input type=\"radio\" name=\"SL2\" value=\"b\">&nbsp;\n");
    writeString_P_WIFI("<input type=\"radio\" name=\"SL1\" value=\"a\">\n");
    writeString_P_WIFI("<br>\n");
    
    writeString_P_WIFI("<input type=\"submit\" value=\"Setzen\">\n");
    writeString_P_WIFI("<input type=\"reset\" name=\"Name\" value=\"reset\">\n");
    writeString_P_WIFI("</form>\n");
    
    writeString_P_WIFI("</body>\n");
    writeString_P_WIFI("</html>\n");
    
    	// Wait a bit and then close connection:
    	mSleep(50);  // Depending on the content you may have to wait longer.
    
    	enter_cmd_mode_WIFI(); // ??? Wie funktioniert das?
    	writeCommand_WIFI("close\r");
    	leave_cmd_mode_WIFI();
    }
    Die URL im Form-Tag muss man natürlich anpassen.

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    29.08.2008
    Beiträge
    73
    Hey leute,

    ich werf mal so zwischen durch ein, dass ichs auch endlich am Laufen habe
    Die Einarbeitung ist doch etwas tricky, wenn man keinen RP6 hat, aber es ist eigentlich alles super erklärt nur schadet es nicht das RP6 Handbuch auch zu kennen.
    ich hatte zuerst auch Probleme mit der WLAN-Verbindung, aber es lag an meinem Router. Hab das Modul jetzt wo anders getestet, da geht es sofort ohne Probleme. Super Arbeit von Arrex. Jetzt auf ans weiter testen.

    Gruß
    Elchi

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Jo, Ichthyosaurier nun auch endlich ein vernünftiges WLAN-Terminal in labview, welches ich nun gerade versuche, zu verwenden und einzubauen.
    Mal sehen...

  5. #5
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Beim Kompilieren des SD-Card-Beispiel habe ich einige Hürden zu überwinden. Gegen " 'for' loop initial declaration used outside C99 mode" hilft ein "-std=c99" in den Flags des Kompilers im Makefile. Das war noch einfach. Aber das verstehe ich nicht:

    Code:
    avr-gcc -std=c99 -mmcu=atmega2560 -Os -mno-interrupts -funsigned-char -funsigned-bitfields -Wall -Wstrict-prototypes -ggdb -c -DF_CPU=16000000UL -Wa,-acdhlmns=RP6M256Lib.lst RP6M256Lib.c -o RP6M256Lib.o
    RP6M256Lib.c:547: warning: declaration does not declare anything
    RP6M256Lib.c: In function 'delayCycles':
    RP6M256Lib.c:650: error: 'asm' undeclared (first use in this function)
    RP6M256Lib.c:650: error: (Each undeclared identifier is reported only once
    RP6M256Lib.c:650: error: for each function it appears in.)
    RP6M256Lib.c:650: error: expected ';' before 'volatile'
    make: *** [RP6M256Lib.o] Error 1
    Beides bezieht sich auf die Datei RP6M256Lib.c:

    Code:
    /*****************************************************************************/
    // Delays, Stopwatches and Beeper:
    
    
    // ---------------------
    // Internal status bits
    volatile union {
    	uint8_t byte;
    	struct {
    		unsigned beep:1;
    		unsigned unused:7;
    	}; <-- Zeile 547
    } controlStatus;
    Code:
    /**
     * Delay a number of instruction cycles. 
     * No exact delay function! And interrupts can still occur and 
     * add a lot of extra cycles.
     * This function only guarantees to delay for a MINIMAL number
     * of cycles! 
     *
     * Example:
     * 	delayCycles(1000); // Delays for *about* 1000 instruction cycles
     */
    void delayCycles(volatile uint16_t dly)
    {
    	//volatile uint16_t delay2 = dly;
    	//while(delay2--) nop();	
    	while(dly--) nop(); <-- Zeile 650
    }
    Das #define für nop() findet sich in RP6M256.h in Zeile 276:
    Code:
    // Assembly and system macros:
    #define nop(); {asm volatile("nop\n\t");} <-- Zeile 276
    #define bl_reset(); cli();bl_start();
    (Zeilenangaben jeweils aus der Library der Testmodule)

    Irgendwelche Ideen?

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    40
    Beiträge
    1.516
    Hallo mic,

    gibt keine Probleme hier, der Compiler Aufruf ist aber auch deutlich anders... Du verwendest nicht die makefiles die dabei waren nehme ich an?

    Compiling: ../../RP6Lib/RP6control_M256_WIFI/RP6M256Lib.c
    avr-gcc -c -mmcu=atmega2560 -I. -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=../../RP6Lib/RP6control_M256_WIFI/RP6M256Lib.lst -I../../RP6Lib -I../../RP6Lib/RP6control_M256_WIFI -I../../RP6Lib/RP6common -I../../RP6Lib/RP6control_M256_WIFI/sdc -std=gnu99 -MD -MP -MF .dep/RP6M256Lib.o.d ../../RP6Lib/RP6control_M256_WIFI/RP6M256Lib.c -o ../../RP6Lib/RP6control_M256_WIFI/RP6M256Lib.o
    Wie sieht Dein Makefile denn aus?
    Benutzt Du WinAVR oder was anderes?


    Übrigens das nop(); wird auch an anderen Stellen in der Lib verwendet, also dürftest Du eigentlich wenn es denn Probleme macht gar kein Programm erfolgreich compilieren können.

    > "-std=c99"

    Nimm mal gnu99.

    MfG,
    SlyD

  7. #7
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Danke für die schnelle Antwort.

    Ich verwende KamAVR welches sein eigenes Makefile automatisch erstellt:

    Code:
    ################################################################################
    ################################################################################
    ##                                                                            ##
    ## NOTE:  This makefile uses GNU make syntax.                                 ##
    ## =====  It may not work when called by other make utilities                 ##
    ##                                                                            ##
    ################################################################################
    ################################################################################
    
    ################################################################################
    ###              ###############################################################
    ### PROJECT NAME ###############################################################
    ###              ###############################################################
    ################################################################################
    
    PROJECT = sd-card-test
    
    ################################################################################
    ##     #########################################################################
    ## CPU #########################################################################
    ##     #########################################################################
    ################################################################################
    
    CPU = atmega2560
    
    ################################################################################
    ###         ####################################################################
    ### SOURCES ####################################################################
    ###         ####################################################################
    ################################################################################
    
    OBJ  = RP6M256Lib.o
    OBJ += RP6M256uart.o
    OBJ += RP6M256_WIFIlib.o
    OBJ += sdc\partition.o
    OBJ += sdc\sd_raw.o
    OBJ += sd-card-test.o
    OBJ += sdc\fat.o
    OBJ += sdc\byteordering.o
    
    ################################################################################
    ##       #######################################################################
    ## TOOLS #######################################################################
    ##       #######################################################################
    ################################################################################
    
    COMPILER  = avr-gcc
    ASSEMBLER = avr-gcc
    LINKER    = avr-gcc
    ROMIZER   = avr-objcopy
    DUMPER    = avr-objdump
    
    ################################################################################
    ##       #######################################################################
    ## FLAGS #######################################################################
    ##       #######################################################################
    ################################################################################
    
    COMMON_FLAGS  = -std=c99
    COMMON_FLAGS += -mmcu=$(CPU)
    COMMON_FLAGS += -Os
    COMMON_FLAGS += -mno-interrupts
    COMMON_FLAGS += -funsigned-char
    COMMON_FLAGS += -funsigned-bitfields
    COMMON_FLAGS += -Wall
    COMMON_FLAGS += -Wstrict-prototypes
    
    LINK_FLAGS  = $(COMMON_FLAGS) -ggdb
    
    COMPILE_FLAGS  = $(LINK_FLAGS) -c -DF_CPU=16000000UL
    
    ASSEMBLE_FLAGS  = $(COMMON_FLAGS) -c -I. -x assembler-with-cpp
    
    EEPROM_FLAGS  = -j .eeprom
    EEPROM_FLAGS += --change-section-lma .eeprom=0
    
    FLASH_FLAGS  = -j .text
    FLASH_FLAGS += -j .data
    
    ELF_FLAGS  = --cref
    ELF_FLAGS += -lm
    
    ################################################################################
    ##         #####################################################################
    ## ACTIONS #####################################################################
    ##         #####################################################################
    ################################################################################
    
    COMPILE      = $(COMPILER) $(COMPILE_FLAGS)
    ASSEMBLE     = $(ASSEMBLER) $(ASSEMBLE_FLAGS)
    LINK         = $(LINKER) $(LINK_FLAGS)
    REMOVE       = rm -f
    
    ################################################################################
    ##       #######################################################################
    ## BUILD #######################################################################
    ##       #######################################################################
    ################################################################################
    
    all: elf flash eep
    
    rebuild: clean all
    
    clean:
    	$(REMOVE) $(PROJECT).hex
    	$(REMOVE) $(PROJECT)_eeprom.hex
    	$(REMOVE) $(PROJECT).elf
    	$(REMOVE) $(PROJECT).map
    	$(REMOVE) $(PROJECT).cof
    	$(REMOVE) $(PROJECT).lst
    	$(REMOVE) $(OBJ:.o=.lst)
    	$(REMOVE) $(OBJ)
    
    eep:     $(PROJECT)_eeprom.hex
    flash:   $(PROJECT).hex
    elf:     $(PROJECT).elf
    
    ################################################################################
    ##      ########################################################################
    ## LINK ########################################################################
    ##      ########################################################################
    ################################################################################
    
    $(PROJECT)_eeprom.hex: $(PROJECT).elf
    	$(ROMIZER) $(EEPROM_FLAGS) -O ihex $(PROJECT).elf $(PROJECT)_eeprom.hex
    
    $(PROJECT).hex: $(PROJECT).elf
    	$(ROMIZER) $(FLASH_FLAGS) -O ihex $(PROJECT).elf $(PROJECT).hex
    
    $(PROJECT).elf: $(OBJ)
    	$(LINK) $(OBJ) -o $(PROJECT).elf $(ELF_FLAGS)
    
    ################################################################################
    ##         #####################################################################
    ## COMPILE #####################################################################
    ##         #####################################################################
    ################################################################################
    
    %.o : %.c
    	$(COMPILE) $< -o $@
    
    %.o : %.s
    	$(ASSEMBLE) $< -o $@
    Inzwischen bin ich etwas weiter gekommen. Die union-Strucktur habe ich auskommentiert, asm habe ich in __asm__ umbenannt. Und siehe da: Es funktioniert!

    Code:
       _______________________
       \| RP6  ROBOT SYSTEM |/
        \_-_-_-_-_-_-_-_-_-_/
    
    Hello World from RP6 CONTROL M256 WIFI!
    Let's move it!  :)
    This message was sent via ***WLAN***!
    (Kompiliert von mic 25.7.2012
    Testing SD Card. Please wait (SDHC Cards will take longer)...
    
    SD INIT OK!
    opening filesystem OK!
    opening root directory OK!
    manuf:  0x27
    oem:    PH
    prod:   SD04G
    rev:    48
    serial: 0xc202
    date:   2/12
    size:   3768MB
    copy:   0
    wr.pr.: 0/0
    format: 0
    free:   0/0
    M256_SELFTEST_TESTFILE.txt           1455
    
    
    ###############################################################################
    RP6 M256 SD CARD Testfile 01234567890
    ###############################################################################
    If you can see the two 3D Triangles below and can read this text, 
    SD Card reading works fine! 
    ###############################################################################
         ____  ____  ____  ____                      ______________________
        /\   \/\   \/\   \/\   \                    /\                     \
       /  \___\ \___\ \___\ \___\                  /  \    _________________\
       \  / __/_/   / /   / /   /                  \   \   \                /
        \/_/\   \__/\/___/\/___/                    \   \   \__________    /
          /  \___\    /  \___\                       \   \   \    /   /   /
          \  / __/_  _\  /   /                        \   \   \  /   /   /
           \/_/\   \/\ \/___/                          \   \   \/   /   /
             /  \__/  \___\                             \   \  /   /   /
             \  / _\  /   /                              \   \/   /   /
              \/_/\ \/___/                                \      /   /
                /  \___\                                   \    /   /
                \  /   /                                    \  /   /
                 \/___/                                      \/___/
    
    ###############################################################################
    Juhu :)

    Gruß

    mic

    P.S.: Hier klemmts noch:

    sd-card-test.c:283: warning: pointer targets in passing argument 1 of 'strstr' differ in signednes

    Code:
    			uint8_t buffer[160];
    			uint32_t offset = 0;
    			intptr_t count;
    
    			while((count = fat_read_file(fd, buffer, sizeof(buffer))) > 0)
    			{
    				if(offset == 0) {
    					// Briefly check if the contents are correct!
    					// Only one single line is checked.
    					char* ptr = strstr(&buffer[0], "RP6 M256"); <-- Zeile 283
    					if(strncmp(ptr, "RP6 M256 SD CARD Testfile 01234567890", 37) != 0) {
    Angehängte Dateien Angehängte Dateien
    Geändert von radbruch (25.07.2012 um 21:29 Uhr)
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Hi Radbruch,

    funzt dein Programm bei dir immer? Bei mir klappt es bis zur ersten Eingabe, ab der zweiten ist die Verbindung weg?!!?

    Grüße

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Habe da einen kleinen Fehler im Beispiel 12 entdeckt:
    Wenn man cmd aktiviert hat, aber einen Bumper betätigt, wird zunächst kein Escape-Behave aktiviert. Dieser folgt dann aber prompt, wenn man den Command-Modus wieder deaktiviert...
    Ist glaube ich nicht so gewollt, oder?
    Grüße

  10. #10
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Bei mir klappt es bis zur ersten Eingabe, ab der zweiten ist die Verbindung weg?
    Das Beispiel für die SD-Card erwartet keine Parameter. Hast du die Text-Datei aus dem Beispielordner in das Root-Verzeichniss der SD-Card kopiert? SD-Card ist mit FAT32 formatiert?

    Jetzt fehlt eigentlich nur noch die GUI und vielleicht ein etwas effizienteres Protokoll
    Ein WIFI-Board braucht doch keine GUI, eine Browserschnittstelle ist viel knuffiger:

    Code:
    // LEDs setzen und Daten der Browseranforderung anzeigen                        mic 28.7.2012
    
    // https://www.roboternetz.de/community/threads/58162-Diskussion-zum-RP6-M256-WIFI-Modul?p=555651&viewfull=1#post555651
    
    #include "RP6M256Lib.h"
    
    uint8_t c, header_html_request[20][100], hhr_zeile=0, hhr_zeile_max=0, hhr_pos=0, hhr_params;
    uint8_t leds_mask=0;
    
    void leds_setzen(void);
    void send_html_page(void);
    
    int main(void)
    {
    	initRP6M256();
    
    	writeString_P("\n\rBrowserdaten anzeigen                               mic 28.7.2012\n\r");
    
    	// Make sure WLAN Module Packet size / buffer size and flush timer is OK
    	enter_cmd_mode_WIFI();
    	issueCMD_WIFI("set comm size 1024","AOK");
    	issueCMD_WIFI("set comm time 10","AOK");
    	leave_cmd_mode_WIFI();
    
    	while(true)
    	{
    		if(getBufferLength_WIFI()) // Daten vom Browser empfangen?
    		{
    			c=readChar_WIFI(); // Zeichen einlesen...
    			if(hhr_pos<98) header_html_request[hhr_zeile][hhr_pos++]=c; // ...und speichern
    			if(c==13) // Zeilenende?
    			{
    				header_html_request[hhr_zeile][hhr_pos++]=0; // String Endekennung anfügen
    				hhr_zeile++; // nächste Zeile einlesen
    				hhr_pos=0; // Zeile startet bei Position null
    				stopStopwatch1();
    				setStopwatch1(0);
    				startStopwatch1(); // Timeout starten
    			}
    		}
    
    		if(getStopwatch1() > 50) // Timeout beim Empfang bedeutet Headerende
    		{
    			header_html_request[hhr_zeile][hhr_pos++]=0; // String Endekennung anfügen
    			hhr_zeile_max=hhr_zeile+1; // Anzahl der Zeilen speichern...
    			leds_setzen();
    			send_html_page(); // ... und antworten
    			hhr_zeile=0; // vorbereiten für nächsten Request-Header
    			hhr_pos=0;
    			hhr_zeile_max=0;
    			stopStopwatch1(); // ab jetzt kein Timeout mehr überprüfen
    			setStopwatch1(0);
    		}
    	}
    	return 0;
    }
    
    void leds_setzen(void)
    {
    	hhr_pos=0;
    	do
    		c=header_html_request[0][hhr_pos++];
    	while(c && (c != 'G'));
    
    	if(c) // GET oder POST im Request gefunden?
    		hhr_params=0; // GET
    	else
    		hhr_params=hhr_zeile_max-1; // kein GET
    
    	hhr_pos=0;
    	leds_mask=0;
    	do
    	{
    		c=header_html_request[hhr_params][hhr_pos++];
    		if(c) switch(c)
    		{
    			case 'a': leds_mask |= 1; break;
    			case 'b': leds_mask |= 2; break;
    			case 'c': leds_mask |= 4; break;
    			case 'd': leds_mask |= 8; break;
    		}
    	}while(c);
    
    	setLEDs(leds_mask & 0Xf);
    }
    
    void send_html_page(void)
    {
    	// Erhalt der Anforderung quittieren:
    	writeString_P_WIFI("HTTP/1.1 200 OK\r\n");
    	writeString_P_WIFI("Content-type: text/html\r\n");
    	writeString_P_WIFI("\r\n");
    
    	stopStopwatch1();
    	setStopwatch1(0);
    	startStopwatch1();
    
    // Send HTML Content:
    writeString_P_WIFI("<html>\n<head>\n<title>RP6-WIFI: HTTP-Requestdaten anzeigen</title>\n</head>\n<body>\n");
    writeString_P_WIFI("<h1>RP6-WIFI: LED setzen mit GET und POST</h1>\n");
    writeString_P_WIFI("<form action=\"\" name\"get\" method=\"get\">\n");
    
    writeString_P_WIFI("gSL4<input type=\"checkbox\" ");
    if(leds_mask & 8) writeString_P_WIFI("checked ");
    writeString_P_WIFI("name=\"gSL4\" value=\"d\">&nbsp;&nbsp;\n");
    
    writeString_P_WIFI("gSL3<input type=\"checkbox\" ");
    if(leds_mask & 4) writeString_P_WIFI("checked ");
    writeString_P_WIFI("name=\"gSL3\" value=\"c\">&nbsp;&nbsp;\n");
    
    writeString_P_WIFI("gSL2<input type=\"checkbox\" ");
    if(leds_mask & 2) writeString_P_WIFI("checked ");
    writeString_P_WIFI("name=\"gSL2\" value=\"b\">&nbsp;&nbsp;\n");
    
    writeString_P_WIFI("gSL1<input type=\"checkbox\" ");
    if(leds_mask & 1) writeString_P_WIFI("checked ");
    writeString_P_WIFI("name=\"gSL1\" value=\"a\">&nbsp;\n");
    
    writeString_P_WIFI("<input type=\"submit\" value=\"GET\">\n");
    writeString_P_WIFI("</form>\n");
    
    writeString_P_WIFI("<form action=\"\" name\"post\" method=\"post\">\n");
    
    writeString_P_WIFI("pSL4<input type=\"checkbox\" ");
    if(leds_mask & 8) writeString_P_WIFI("checked ");
    writeString_P_WIFI("name=\"pSL4\" value=\"d\">&nbsp;&nbsp;\n");
    
    writeString_P_WIFI("pSL3<input type=\"checkbox\" ");
    if(leds_mask & 4) writeString_P_WIFI("checked ");
    writeString_P_WIFI("name=\"pSL3\" value=\"c\">&nbsp;&nbsp;\n");
    
    writeString_P_WIFI("pSL2<input type=\"checkbox\" ");
    if(leds_mask & 2) writeString_P_WIFI("checked ");
    writeString_P_WIFI("name=\"pSL2\" value=\"b\">&nbsp;&nbsp;\n");
    
    writeString_P_WIFI("pSL1<input type=\"checkbox\" ");
    if(leds_mask & 1) writeString_P_WIFI("checked ");
    writeString_P_WIFI("name=\"pSL1\" value=\"a\">&nbsp;\n");
    
    writeString_P_WIFI("<input type=\"submit\" value=\"POST\">\n");
    writeString_P_WIFI("</form>\n");
    
    	for(hhr_zeile=0; hhr_zeile < hhr_zeile_max; hhr_zeile++)
    	{
    		hhr_pos=0;
    		writeString_P_WIFI("Request Zeile ");
    		writeInteger_WIFI(hhr_zeile, 10);
    		writeString_P_WIFI(": ");
    		do
    		{
    			c=header_html_request[hhr_zeile][hhr_pos++];
    			if(c) writeChar_WIFI(c);
    		}while(c);
    		writeString_P_WIFI("\n<br>\n");
    	}
    
    	writeString_P_WIFI("\n<br>\nDie Parameter befinden sich in Zeile ");
    	writeInteger_WIFI(hhr_params, 10);
    	writeString_P_WIFI(":\n<br>\n");
    	hhr_pos=0;
    	do
    	{
    		c=header_html_request[hhr_params][hhr_pos++];
    		if(c) writeChar_WIFI(c);
    	}while(c);
    
    writeString_P_WIFI("<br>\nleds_mask ist ");
    writeInteger_WIFI(leds_mask, 2);
    writeString_P_WIFI("\n<br><br>\n<small>\n[Ladezeit der Seite: ");
    writeInteger_WIFI(getStopwatch1()+1, 10);
    writeString_P_WIFI("ms]\n<br><br>\nmic 29.7.2012\n</small>\n");
    writeString_P_WIFI("</body>\n");
    writeString_P_WIFI("</html>\n");
    
    	stopStopwatch1();
    	setStopwatch1(0);
    	// Wait a bit and then close connection:
    	mSleep(50);  // Depending on the content you may have to wait longer.
    
    	enter_cmd_mode_WIFI();
    	writeCommand_WIFI("close\r");
    	leave_cmd_mode_WIFI();
    }
    Zwar noch etwas holperig und viel "zu Fuss" programmiert, weil ich mit HTML nicht wirklich geübt bin, aber immerhin zeigt es den Ansatz. Leider funktioniert es nicht mit meinem 9er IE, aber mit dem FF klappts wie erwartet. Es ist natürlich noch nicht perfekt.

    Das hier stört mich noch sehr dabei, weil es massig Speicherplatz verschwendet:

    header_html_request[20][100]

    Aber der m256 hat ja reichlich davon. ;)

    Gruß

    mic
    Geändert von radbruch (29.07.2012 um 02:33 Uhr) Grund: optisches Update
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. [ERLEDIGT] Kostenlose RP6 M256 WIFI Module für Testanwender!
    Von SlyD im Forum Robby RP6
    Antworten: 10
    Letzter Beitrag: 02.07.2012, 15:24
  2. RP6v2 M256 WiFi !?
    Von Dirk im Forum Robby RP6
    Antworten: 20
    Letzter Beitrag: 11.05.2012, 19:27
  3. ARM für WiFi steuerung ?
    Von fat tony im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 5
    Letzter Beitrag: 03.01.2010, 13:57
  4. Wifi Roboter
    Von newName im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 4
    Letzter Beitrag: 16.01.2008, 13:51
  5. Formate zur Diskussion
    Von sonic im Forum Konstruktion/CAD/3D-Druck/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 24
    Letzter Beitrag: 03.08.2004, 18:41

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress