Daten aus C Programm an HTML
-
Probiere mal in der Richtung
function moretext() { document.myform.submit(); }
-
Hallo,
1. wenn man
voraus
richtig schreibt, wird es auch vom Forum angenommen
2. @hermes Was hindert dich daran, in deinem C-Programm einfach die HTML-Datei direkt zu beschreiben bzw. jeweils die aktuellen Inhalte hineinzuschreiben?
-
voraus vorraus vorrraus
-
árn[y]ék schrieb:
Hallo,
2. @hermes Was hindert dich daran, in deinem C-Programm einfach die HTML-Datei direkt zu beschreiben bzw. jeweils die aktuellen Inhalte hineinzuschreiben?So mache ich es momentan.
Nur um immer die aktuellen Daten zu sehen muss ich die Webseite immer wieder
aufrischen.Das sollte aber automatisch laufen mit einem Timer und einem TimerEvent.
JavaScript bietet so etwas aber nicht.
http://javascript-workshop.de/buch/01.html //Ganz nett gemacht
Oder ich habe es nicht gefunden.
Desweiteren sollten natürlich auch Daten an das C Programm übermittelt
werden.
-
Hallo,
bin nun soweit das mein HTML Code einen script in C unter linux ausführt, dieser liest via RS232 die Uhrzeit des Gerätes die dann angezeigt wird.
Leider muss ich den srcript immer wieder ausführen(meta tag) um die Uhrzeit zu
aktualisieren.<html> <head> </head> <body bgcolor="#E0E0E0"> <form action="/cgi-bin/NTG2007" method="get"> <p><input type="submit" value="Get Time"></p> </form> </body> </html>
#include <stdio.h> #include <unistd.h> #include <stdlib.h> #include "\Workspace\NTG2007\Uart\Uart.h" #include "\Workspace\NTG2007\TestUart\TestUart.h" static unsigned char GetBuffer[255]; static int Lenght; int main(void) { const char Port[] = {"/dev/ttyS2"}; unsigned char GetTime[] = {0x68,0x0a,0x0a,0x68,0x0a,0x70,0x01,0x90,0x5a,0x10,0x01,0x01,0x02,0x06,0x09,0x7e,0x16}; char *data; int FdUart2; printf("Content-type: text/html\n\n"); printf("<meta http-equiv=\"refresh\" content=\"1; URL=/cgi-bin/NTG2007\" />"); data = getenv("QUERY_STRING"); FdUart2 = InitUart(Port,38400); if(FdUart2 == -1) { printf("Open Error:");printf(Port);printf("\n"); return 0; } else { WriteUart(FdUart2,GetTime,sizeof(GetTime)); usleep(100000); Lenght = ReadUart(FdUart2,GetBuffer,255); printf("<h1>NTG Time %02d:%02d:%02d</h1>",GetBuffer[18],GetBuffer[19],GetBuffer[20]); } CloseUart(FdUart2); return 0; }
Gibt es da nun nicht eine Möglichkeit das die HTML Seite ein Fenster Object
an das C Script sendet in dem dann die Uhrzeit eingetragen wird?
z.B. HtmlObject->Text = Time oder so ähnlich.
-
hermes schrieb:
Gibt es da nun nicht eine Möglichkeit das die HTML Seite ein Fenster Object
an das C Script sendet in dem dann die Uhrzeit eingetragen wird?
z.B. HtmlObject->Text = Time oder so ähnlich.Nein, eine Aktualisierung kann nur sozusagen von der Webseite aus ausgeführt werden, dein C-Programm (der Server) hat keinen Zugriff auf die Seite (den Client), nachdem diese einmal übertragen wurde.
Um nicht die ganze Seite neu laden zu müssen kannst du mit Hilfe von Javascript im Hintergrund Anfragen an das C-Programm schicken und mit der Antwort den angezeigten Text aktualisieren. Diese Technik nennt sich Ajax, darunter solltest du etwas finden.
-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="de"> <head><title>JavaScript-Beispiel</title> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <script type="text/javascript"> function IncDec (Wert) { var Temp = Wert; if (!IncDec.Zahl) IncDec.Zahl=1; else { if(Wert == 1) IncDec.Zahl++; else if(IncDec.Zahl != 0) IncDec.Zahl--; } document.getElementById("ergebnis").firstChild.data = IncDec.Zahl; document.getElementById("zahl").firstChild.data = Temp; } </script> </head> <body> <h1>Java Script Beispielx</h1> <td><input type="button" value="Inc" onclick="IncDec(1)"></td> <td><input type="button" value="Dec" onclick="IncDec(2)"></td> <p id="ergebnis">0 </p> <p id="zahl">0 </p> </body> </html>
Hier mal ein Java Script, auf Inc oder Dec Click wird die Funktion IncDec
ausgeführt. Ich möchte nun aber nicht ständig ein Button drücken, wie
kann ich dafür sorgen das die Funktion 1 mal pro Sekunde automatisch ausgeführt wird.
-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="de"> <head><title>JavaScript-Beispiel</title> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <script type="text/javascript"> function IncDec (Wert) { var Temp = Wert; if (!IncDec.Zahl) IncDec.Zahl=1; else { if(Wert == 1) IncDec.Zahl++; else if(IncDec.Zahl != 0) IncDec.Zahl--; } document.getElementById("ergebnis").firstChild.data = IncDec.Zahl; document.getElementById("zahl").firstChild.data = Temp; } </script> </head> [b]<body onload="window.setInterval('IncDec(1)',1000)">[/b] <h1>Java Script Beispielx</h1> <td><input type="button" value="Inc" onclick="IncDec(1)"></td> <td><input type="button" value="Dec" onclick="IncDec(2)"></td> <p id="ergebnis">0 </p> <p id="zahl">0 </p> </script> </body> </html>
So wird die Funktion IncDec(1) 1x pro secunde ausgeführt.
-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="de"> <head><title>Ajax JavaScript-Beispiel</title> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> </head> <script type="text/javascript" src="jquery-1.2.6.js"></script> <script language="JavaScript"> function IncDec (Wert) { $("#y").load("Test.html"); } </script> <body onload="window.setInterval('IncDec(1)',100)"> <form name="Test"> <div id="y"><b></b></div> </form> </body> </html>
#include <stdio.h> #include <unistd.h> #include <stdlib.h> #include "\Workspace\NTG2007\Uart\Uart.h" #include "\Workspace\NTG2007\TestUart\TestUart.h" static unsigned char GetBuffer[255]; static int Lenght; FILE *File; int n; char Test[200]; int main(void) { const char Port[] = {"/dev/ttyS2"}; unsigned char GetTime[] = {0x68,0x0a,0x0a,0x68,0x0a,0x70,0x01,0x90,0x5a,0x10,0x01,0x01,0x02,0x06,0x09,0x7e,0x16}; char *data; int FdUart2; FdUart2 = InitUart(Port,38400); if(FdUart2 == -1) { printf("Open Error:");printf(Port);printf("\n"); return 0; } else { while(1) { WriteUart(FdUart2,GetTime,sizeof(GetTime)); sleep(1); Lenght = ReadUart(FdUart2,GetBuffer,255); File = fopen("/www/Test.html","r+"); n = sprintf(Test,"<p>NTG2007 Time: <input type=\"text\"value=\"%02d:%02d:%02d\" size=\"5\" >",GetBuffer[18],GetBuffer[19],GetBuffer[20]); fwrite(Test,1,n,File); fclose(File); } } CloseUart(FdUart2); return 0; }
Habe mir mal jquery-1.2.6.js http://docs.jquery.com/Main_Page besorgt.
Nun schreibt mein C Prog die Daten nach Test.html und $("#y").load("Test.html") fügt das ganze nach <div id="y"><b> hier </b></div>
ein, es wird nicht mehr die ganze Seite neu geladen.Das ganze muss in <script type="text/javascript" src="jquery-1.2.6.js"></script> eingetragen werden.
jquery-1.2.6.js befindet sich im gleichen Ordner wie index.html, muss aber
nicht. Wird ein anderer Ordner benutzt muss src=".... entsprechend angepasst
werden.Zum testen braucht man natürlich kein C Prog, man kann Test.html auch mit
einem Editor ändern.
Die Änderungen werden dann auf der Webseite sichtbar.
-
Das sieht schon gut aus.
Eventuell könntest du auch die Abfrage der Schnittstelle nur bei Anfragen durch die Webseite durchführen, anstatt das Programm ständig laufen zu lassen, aber das ist eine Frage des genauen Einsatzzwecks.
-
hermes schrieb:
Ist schon klar, hast Du wenigstens einen link auf ein Tutorial.
Da ich C/C++ Programmiere ist die ganze Web Programmiersprache sehr
gewöhnungsbedürftig für mich.Warum Programmierst Du nicht in Perl/Python oder Java/Ruby oder TCL/Visual Basic oder eine andere Kombination aus 2 Programmiersprachen. Warum ausgerechnet C/C++
. Ich bevorzuge normalerweise C++ statt C.
-
tntnet schrieb:
Warum Programmierst Du nicht in Perl/Python oder Java/Ruby oder TCL/Visual Basic oder eine andere Kombination aus 2 Programmiersprachen. Warum ausgerechnet C/C++
. Ich bevorzuge normalerweise C++ statt C.
Da ich µController in C sowie Assembler programmiere und passende Windows Anwendungen mit dem Borland Builder in C++. Was spricht dagegen.
Ausserdem lassen sich die meisten µController aufgrund von Speichermangel nicht
in C++ programmieren.Als weitere Sprache würde ich dann eher Java bevorzugen, ich finde z.B. Perl
äußerst gewöhnungsbedürftig.
-
hermes schrieb:
tntnet schrieb:
Warum Programmierst Du nicht in Perl/Python oder Java/Ruby oder TCL/Visual Basic oder eine andere Kombination aus 2 Programmiersprachen. Warum ausgerechnet C/C++
. Ich bevorzuge normalerweise C++ statt C.
Da ich µController in C sowie Assembler programmiere und passende Windows Anwendungen mit dem Borland Builder in C++. Was spricht dagegen.
Ausserdem lassen sich die meisten µController aufgrund von Speichermangel nicht
in C++ programmieren.Als weitere Sprache würde ich dann eher Java bevorzugen, ich finde z.B. Perl
äußerst gewöhnungsbedürftig.Ich glaube, Du hast mich falsch verstanden. Um es noch deutlicher zu schreiben: Es gibt keine Programmiersprace C/C++, auch wenn man es immer wieder liest. Man programmiert nicht in C/C++. Man programmiert in C oder man programmiert mit C++. Das wird immer wieder durcheinander gebracht. Man kann natürlich auch in C und C++ programmieren. Dann sollte man es aber auch so schreiben.
-
tntnet schrieb:
Man kann natürlich auch in C und C++ programmieren. Dann sollte man es aber auch so schreiben.
So habe ich das auch gemeint