Homepage

  • Projekte
  • Shop
  • Forum
Erweiterte Suche
  • Schnellzugriff
    • Unbeantwortete Themen
    • Aktive Themen
    • Suche
  • FAQ
  • Anmelden
  • Registrieren
  • Foren-Übersicht
  • Suche

HTML Inhalt "dynamisch" ändern

Ihr habe noch Fragen zum AVR Webmodule? Dann seit Ihr hier genau richtig!
Antworten
  • Druckansicht
Erweiterte Suche
9 Beiträge • Seite 1 von 1
Acer
Beiträge: 5
Registriert: 05.07.2009, 13:34:30

HTML Inhalt "dynamisch" ändern

  • Zitieren

Beitrag von Acer » 05.07.2009, 13:47:50

Hallo

Kurz zu mir: Ich bin 22 Jahre jung, komme aus Darmstadt und studiere Automatisierungs- und Informationstechinik und Mikroelektronik an der Hochschule Darmstadt und beende zur Zeit das vierte Semester.

Ich habe folgendes Vorhaben gefasst:
Es gibt ein Modul, dieses hat auf der einen Seite Ethernet, auf der anderen Seite I2C. Es dient also als eine Art Gateway. An dieses Gateway sollen weitere Module angeschlossen werden. Das sollen Dimmer und Schaltmodule werden. Beschränken wiru ns mal auf Schaltmodule.
Nun stellen wir uns folgendes Szenario vor: Ich schliese ein neues Modul "Schalter, 3 Kanal" an das Modul an. Ich öffne die Webseite von dem Modul, gehe auf die Seite "Modul hinzufügen". Ich wähle in einer Combo Box "Schalter, 3 Kanal" aus, gebe die Adresse ein und klicke auf den Button "Hinzufügen!". Auf dem Prozessor wird das Modul einer verketteten List hinzugefügt und ist absofort verfügbar. Warum verkettete Liste? Dort drinnen lassen sich Strukturen am einfachsten Verwalten und so bekomme ich die Objektorientierung "Klassenlike" in C unter. Alternative wären Klassen in C++ auf dem Mikroprozessor sofern überhaupt möglich (hab mich mit C++ auf uPs noch nicht befasst).
Nun gehe ich auf die Seite "Angeschlossene Module anzeigen". Dot sehe ich eine Tabelle mit den Spalten

Modulname | Adresse | Status | Optionen |

Im falle des 3 Kanal schalters sähe das zum Biespiel so aus
Modulname | Adresse | Status | Optionen |
Schalter, 3 Kanal | 0x94 | Okay | Kanal 1 [ ], Kanal 2 [ ], Kanal 3 [ ]
[ ] sind dabei CheckBoxen.
Status wird über das "ACK" vom I2C bewerkstelligt.

Nun zum Problem:
Ich weis das ich in einer fertigen HTML Seite dynamisch Werte von Registern darstellen kann. Aber: Kann ich der Tabelle auch Zeilen hinzufügen mit unterschiedlichem Text und Formularelementen (Checkbox zB)? Kann ich über die Seite "Modul Hinzufügen" Einfach Module löschen und hinzufügen und diese in der Tabelle anzeigen lassen?
Ich möchte Plattformunabhängig bleiben. Ergo fällt Java eigentlich flach.

Was mir bewusst ist: Der Speicher platzt ziemlich schnell aus allen nähten besonders wenn ich auf ATMEGA32 gehen will weil das AVR Dragon nur 32k Debuggen kann. Es gibt aber wunderbaren SPI Flashspeicher von Atmel der sich toll ansteuern können lassen soll den ich verwenden würde. Dort drin wäre dann die Verkettete Liste mit den Modulen. Die Webseite könnte man auch auslagern wenn ich wüsste wie. Das ist das zweite Problem: Wie krieg ich es hin die Webseite auf einen externen Speicher zu packen auf den ich nicht extern zugreifen kann (Flash Speicher ,SD Karte kann ich extern zugreifen)?
Vll denk ich zu kompliziert das kann sei.

Noch was: Wir haben als eine Aufgabe dieses Semester gehabt einen Webserver zu bauen. Bzw mit dem NETIO Board und der Software von Ulrich einen ans laufen zu bringen. Ich habe mir die Software angesehen und bin auf "input type" gestoßen um Registerinhalte zu verändern und darzustellen. Das werde ich in den Ferien wohl mal praktisch angehen (NETIO Board besorgen, Software aufspielen).

Grüße
Nach oben

Klaus
Beiträge: 409
Registriert: 17.02.2008, 12:18:39

Re: HTML Inhalt "dynamisch" ändern

  • Zitieren

Beitrag von Klaus » 05.07.2009, 18:36:14

Hi,
das alles sollte machbar sein durch kleine Änderungen im Code.

Wirf mal einen Blick auf das einfügen einer Variable in die Seite. Genau so kannst Du die Einträge einer Ganzen Tabelle einfügen.

Der Speicher für die Struktur wird allerdings problematischer da der Mega 32 schon recht gut ausgelastet ist. Wenn Du auf einen SPI-Flash auslagern willst ist zu beachten das da ja schon den ENC dranhängt - man sollte also wissen was man macht sonst schießt man sich das Netzinterface ab. Überleg ob 2K zusätzlicher RAM ausreichen, wenn ja einfach den 644er einbauen der hat 4K SRAM.
Wird die Struktur allerdings im RAM algelegt ist beim unterbrechen der Versorgungsspannung alles futsch. Also beim Systemstart einfach den BUS scannen und die Module automatisch in die Liste eintragen. Das macht alles wesentlich einfacher.

mfg

Klaus
Nach oben

Acer
Beiträge: 5
Registriert: 05.07.2009, 13:34:30

Re: HTML Inhalt "dynamisch" ändern

  • Zitieren

Beitrag von Acer » 05.07.2009, 18:46:27

Ich benutze nicht die Schaltung von Ulrich, eher eine abgespeckte des netIO Boards.

Der Ethernet Chip hängt am SPI, der Flashspeicher auch. Es müsste schon Flash sein, sonst wäre alles hinüber, wie du schon sagtest, und das möchte ja niemand.

Das der ATmega32 schon gut ausgelastet ist weis ich, das mit dem Speicher ist wirklich noch ein Problem. Ich würde die gesamte Seite auslagern, meinet wegen auch auf SD Karte. Weis nur noch nicht so ganz wie das dann funktioniert. Man findet ja immer nur fertige Projekte und fertigen Sourcecode, da ist es nie ganz so einfach durchzusteigen. Leider.

Meinst du diese Codezeilen:

Code: Alles auswählen

//Port Schalten und Status %PORTA0 bedeutet PORTA PIN0
	"<input type=\"checkbox\" name=\"OUT\" value=\"A\" %PORTA0>\r\n"
	"<span class=\"Stil2\">Port A Pin 0</span></p>\r\n"
	"<p align=\"left\">\r\n"
	
	//Port Schalten und Status %PORTA1 bedeutet PORTA PIN1
	"<input type=\"checkbox\" name=\"OUT\" value=\"B\" %PORTA1>\r\n"
	"<span class=\"Stil2\">Port A Pin 1</span></p>\r\n"
	"<p align=\"left\">\r\n"
? Wie soll ich das auf eine Tabelle adaptieren, sodass immer nur soviele Zeilen gezeigt werden wie ich Module dran hängen hab? Bin nicht mehr wirklich Firm in HTML... Aber wenn das doch möglich wäre wäre das Genial.
Nach oben

Klaus
Beiträge: 409
Registriert: 17.02.2008, 12:18:39

Re: HTML Inhalt "dynamisch" ändern

  • Zitieren

Beitrag von Klaus » 06.07.2009, 11:42:21

Hi,

eigentlich dachte ich mehr an diese Zeilen:

//Müssen Variablen ins Packet eingesetzt werden? ===> %VA@00 bis %VA@09
if (b == '%')
{
if (strncasecmp_P("VA@",http_entry[index].new_page_pointer,3)==0)
{
b = (pgm_read_byte(http_entry[index].new_page_pointer+3)-48)*10;
b +=(pgm_read_byte(http_entry[index].new_page_pointer+4)-48);
itoa (var_array,var_conversion_buffer,10);
str_len = strnlen(var_conversion_buffer,CONVERSION_BUFFER_LEN);
memmove(&eth_buffer[TCP_DATA_START+a],var_conversion_buffer,str_len);
a = a + (str_len-1);
http_entry[index].new_page_pointer=http_entry[index].new_page_pointer+5;



anstelle der Variablen kannst Du natürlich kompletten HTML-Text einfügen z.B.
--Titel der Tabelle --
"<table border=\"0\" class=\"tempTbl\" align=\"center\" width=\"400px;\">\r\n"
"<tr>\r\n"
"<th>Temperatur</th>\r\n"
"<th>Balken</th>\r\n"
"<th>Temperatur [°C]</th>\r\n"
"</tr><tr>\r\n"


-- die einzelnen Zeilen z.B. mit Werten aus deiner Struktur gefüllt --
"<td>Wert 1:</td>\r\n"
"<td style=\"text-align:left\"><img src=\"index-Dateien/balke.gif\" alt=\"\" height=\"10\" width=\"%VB@00\"></td>\r\n"
"<td>%VD@00</td>\r\n"
"</tr><tr>\r\n"


Und wenn das ganze permanent gespeichert werden soll würde ich zum Atmel Flash (45DB041 4MBit) raten. Bei SD-Karten mußt Du auch an den SPI-Bus ran und zusätzlich geht wirklich viel für FAT 16 drauf.
Um den Flash zu initialisieren einfach die Daten im AVR-Flash ablegen und kopieren. Danach das AVR-Programm aufspielen. Wenn man sich mühe machen will kann man auch über die Serielle Schnittstelle die Daten übertragen.
Aber nicht vergessen Flash ist kein RAM wenn man öfters schreibt muß man den Refresh beachten und natürlich gehen die Speicherzellen auch irgendwann kaputt.

mfg
Klaus
Nach oben

Acer
Beiträge: 5
Registriert: 05.07.2009, 13:34:30

Re: HTML Inhalt "dynamisch" ändern

  • Zitieren

Beitrag von Acer » 06.07.2009, 16:58:31

Das ist natürlich praktisch.

Code: Alles auswählen

//Müssen Variablen ins Packet eingesetzt werden? ===> %VA@00 bis %VA@09
if (b == '%')
{
if (strncasecmp_P("VA@",http_entry[index].new_page_pointer,3)==0)
{
b = (pgm_read_byte(http_entry[index].new_page_pointer+3)-48)*10;
b +=(pgm_read_byte(http_entry[index].new_page_pointer+4)-48);
itoa (var_array[b],var_conversion_buffer,10);
str_len = strnlen(var_conversion_buffer,CONVERSION_BUFFER_LEN);
memmove(&eth_buffer[TCP_DATA_START+a],var_conversion_buffer,str_len);
a = a + (str_len-1);
http_entry[index].new_page_pointer=http_entry[index].new_page_pointer+5;
In welcher Datei stehen die Zeilen?

Daran, dass ich den AVR mit einem Programm beschreiben kann der den Flash beschreibt und den AVR danach neu zu programmieren hab ich gar nicht dacht, klar geht das immerhin ist der Flash nicht flüchtig.
Alternative zum Flash Speicher auser einer HDD? Sehr viel mehr Speichermöglichkeiten gibt es eben einfach nicht und wenn man so ein Programm haben möchte bleibt einem eigentlich nichts anderes über oder?

Edit: Hab die stelle gefunden. Musses nur noch verstehen ^^

Edit2: Achso ich fülle das VAR Array mit VA@00 bis ka wohin mit meiner Tablle (zeile für zeile) und das geb ich mit der oben genannten routine an das HTTP ab... un das wird dann an den browser gesendet und voilá. Und die Tabellenwerte in dem array wiederrum werden mit den "globalen" structs meiner Module gefüttert. Das is ein ganz schön komplizierter Zusammenahng aber glücklicherweise hab ich ja jetzt dieses SUPER Forum gefunden.
Ich mach mich glaube ich erstmal an den Hardwareaufwand. Muss auch noch schauen wie ich das I2C löse - es gibt ja fertige Arrays mit RJ45... naja mal sehen.

Ich denke ich werde hier demnächst einen Projektthread aufmachen in dem man Munter diskutieren kann, ich hoffe auf Hilfe und darauf das das Projekt wirklich was wird :) Danke für Eure hilfe!
Nach oben

Acer
Beiträge: 5
Registriert: 05.07.2009, 13:34:30

Re: HTML Inhalt "dynamisch" ändern

  • Zitieren

Beitrag von Acer » 13.07.2009, 17:07:49

Ne, ich bin noch nicht ganz dahinter gestiegen wie ich dem nun beibringe mir eine neue Zeile hinzuzufügen.

Wenn ich es richtig verstehe ist %VAR@0..99 ein Array mit Variablen. Wenn ich nun in VAR0 meine Tabelleninfos packe hab ich die schon mal als Variable und kann sie irgendwo hinschreiben.

Einfaches Beispiel: Ich hab einen Taster angeschlossen. Wenn der gedrückt wird soll eine neue Zeile in eine Tabell gepackt werden. Wie geh ich das an?
Wie geh ich das mit einem Link an? Genauso?

Grüße und danke für jede Antwort!
Nach oben

Klaus
Beiträge: 409
Registriert: 17.02.2008, 12:18:39

Re: HTML Inhalt "dynamisch" ändern

  • Zitieren

Beitrag von Klaus » 14.07.2009, 15:38:20

Hi,

es ist volkommen egal was Du in das Paket einfügst, wichtig ist nur zu erkennen das der Paltzhalter da steht damit hier was eingefügt werden muß.

Im Beispiel wird nur ein Zahlenwert von AVR.. eingefügt. Den Code mußt Du so abändern das er die von Dir gewünschte Tabelle ausgibt.

mfg
Klaus
Nach oben

Acer
Beiträge: 5
Registriert: 05.07.2009, 13:34:30

Re: HTML Inhalt "dynamisch" ändern

  • Zitieren

Beitrag von Acer » 14.07.2009, 15:53:11

Der fetzen Code da oben fügt schon was in die Seite ein O.o?
Nach oben

sebi87
Beiträge: 71
Registriert: 25.07.2009, 19:07:34

Re: HTML Inhalt "dynamisch" ändern

  • Zitieren

Beitrag von sebi87 » 10.12.2009, 16:28:08

Wo stehen die Zeilen den?

Ich finde sie nicht :-(
Nach oben

Antworten
  • Druckansicht

9 Beiträge • Seite 1 von 1

Zurück zu „AVR-Webmodule“



  • Foren-Übersicht
  • Alle Zeiten sind UTC+02:00
  • Alle Cookies löschen

Powered by phpBB® Forum Software © phpBB Limited

Deutsche Übersetzung durch phpBB.de

Datenschutz | Nutzungsbedingungen

 

 

sitemap  |    |  datenschutz   |  impressum