- LiTime Speicher und Akkus         
Seite 16 von 19 ErsteErste ... 61415161718 ... LetzteLetzte
Ergebnis 151 bis 160 von 182

Thema: Diskussion zum RP6 M256 WIFI Modul

  1. #151
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Anzeige

    Praxistest und DIY Projekte
    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

  2. #152
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    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 03: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!

  3. #153
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Hi,
    ich meinte
    Bei mir klappt es bis zur ersten Eingabe, ab der zweiten ist die Verbindung weg?
    zu deinem ersten vorgestellten Webbrowser-Programm.
    Dort konnte ich einmal die LEDs nach Wunsch setzen, beim zweiten mal kam ein Verbindungsabbruch...

  4. #154
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Soso, LabView-Kommunikation steht endlich. Die Datenauswertung der Messwerte funzt seit gestern, das Senden von Befehlen klappt im Allgemeinen auch schon. Jedoch alles momentan nur mit dem Example12.
    Fehlt also nur noch die nette Befehlsstruktur von FabianE.!!!!!

    Mal sehen, ob ich das hinbekomme - ansonsten: FabianE., was macht das Programmieren???

    Grüße!

  5. #155
    Max Web
    Gast
    So, mein Test-Projekt nimmt auch mehr und mehr Form an. Mittlerweile werden fast alle Sensordaten übertragen und grafisch in einer Benutzeroberfläche dargestellt, auch die ersten PC-seitigen Programme habe ich schon getestet.
    Probleme mit dem M256 gab es dabei zu keiner Zeit - lediglich ein paar Verbindungsabbrüche, wenn zu viele Befehle gesendet werden - der PC ist dann doch noch etwas schneller

    So sieht es bisher aus:
    Klicke auf die Grafik für eine größere Ansicht

Name:	RoboBridge.jpg
Hits:	41
Größe:	135,3 KB
ID:	22981

    Der Sourcecode sieht (besonders auf C-Seite) nicht nicht so toll aus, hier ist noch einiges an Refactoring zu tun.
    Der aktuelle Zwischenstand ist hier zu finden: http://code.google.com/p/robobridge/

    - Max

  6. #156
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Wow, nicht schlecht!

    Mal ne frage: Sind mit AVR eigentlich Funktionen wie str_fill oder Str_ReadInt erlaubt?
    Bräuchte das für die Befehlsstrucktu-Aufdröselung von FabianE.'s Remotrol...

    Grüße
    Geändert von fabqu (13.08.2012 um 10:14 Uhr)

  7. #157
    Erfahrener Benutzer Roboter-Spezialist Avatar von RolfD
    Registriert seit
    07.02.2011
    Beiträge
    414
    Was heist erlaubt? Das sind meines Wissens Funktionen aus der Lib vom M128 bzw. von den älteren CControl Boards und gehören quasi zum "Betriebssystem" der jeweiligen Geräte... die kannst du dir aber natürlich in C nachbauen... schon mal gegoogelt?
    LG Rolf
    Sind Sie auch ambivalent?

  8. #158
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Jo klar!
    Ich wollte nur wissen, ob die schon vorhanden sind in den Libs, oder ob man sie sich eben erst zusammenbauen muss.

  9. #159
    Max Web
    Gast
    Wenn ich mir die Dokumentation dieser C-Control-Funktionen anschaue meinst Du vermutlich folgendes:

    str_fill scheint diesem C-Code zu entsprechen: http://www.koders.com/c/fidB67BE9216...5E7EC51E2.aspx

    Str_ReadInt heißt in C "itoa"

    strlen (vor Deinem Edit) ist in C natürlich auch "erlaubt", hier wird einfach gezählt, wie viele Zeichen vor dem '\0' stehen.

  10. #160
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    genau
    Das Str_fill habe ich schon gefunden, für strlen hatte ich schon ne Funktion und das mit dem readInt hatte ich vergessen. Und ich glaub, es müsste atoi sein, oder?
    Danke Dir!

Seite 16 von 19 ErsteErste ... 61415161718 ... 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, 16:24
  2. RP6v2 M256 WiFi !?
    Von Dirk im Forum Robby RP6
    Antworten: 20
    Letzter Beitrag: 11.05.2012, 20:27
  3. ARM für WiFi steuerung ?
    Von fat tony im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 5
    Letzter Beitrag: 03.01.2010, 14:57
  4. Wifi Roboter
    Von newName im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 4
    Letzter Beitrag: 16.01.2008, 14: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, 19:41

Berechtigungen

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

LiTime Speicher und Akkus