Hallo ihr Lieben!
Ich habe vor, Drehzahldaten eines Drehzahlmessers via CGI im Internet zu
veröffentlichen. Das heißt, ich übergebe über den Parameter Daten an
meinen Webserver.
Da ich die Drehzahldaten auf dem Webserver grafisch darstellen will (in
Form eines Drehzahlmessers eines Autos) tut sich folgende Frage auf:
Wie kann ich mit HTML ein Bild abhängig von übergebenen Parametern
"animieren". Einfach mehrere Bilder nehmen, die je nach Ereignis (je
nach Drehzahl/min) veröffentlicht wird?
Es sollte schon etwas professioneller aussehen und nicht wie eine 0-8-15
HTML-Seite ;)
Falls ich etwas finde, was meinen Vorstellungen entspricht, poste ich es
hier.
Vielen Dank!
Hmmm, ich würde das vlt. nicht als Grafik machen, sondern via
javascript, da gibts im netz ein paar nette beispiele für Uhren. Die
Daten holst du dir dann via AJAX von einem Server.
Sofern es nicht mit jedem auch steinalten Browser funktionieren muss,
könntest Du Dir mal SVG ansehen. Dazu solltest Du eine Technik anwenden,
die geänderte Daten (in Deinem Fall also wohl die Drehzahl) ohne
Neuladen der Seite zu aktualisieren - das Stichwort hierfür lautet Ajax.
Das allerdings setzt eine clientseitige Skriptsprache voraus, hier
bietet sich Javascript an, denn das unterstützt so gut wie jeder
Browser.
Das SVG liest sich gut, das heißt ,ich könnte mit einem
SVG-Unterstützenden Programm eine Grafik erstellen, die wird dann von
dem SVG-unterstützendem Programm in einen Quelltext (XML).
Per CGI (Programmiersprache C) wird eine Hystere erzeugt, in der geprüft
wird, in welcher Größe die Parameter an den Server übergeben werden.
Sprich, ist Drehzahl zwischen 0-100, dann zeige SVG-Skript1, ist
drehzahl höher, dann zeige SVG-Skript2 usw usw. Das heißt, ich müsste
das SVG-Skript in CGI integrieren?!
Danke!
LinuX007 wrote:
> Nun ich weiß jetzt nicht genau was Ajax ist. Die Daten zum Server> übermitteln, erfolgt aber trotz Verwendung von Ajax via CGI oder?
Nicht zwingend, du kannst auch einfach periodisch eine Datei ablegen die
die Daten vorhält.
AJAX ist einfach nur ein Modebegriff, das ganze basiert darauf das im
"Hintergrund" ein Javascript immer wieder Daten läd (in deinem Fall
einfach nur die Datei) und die Seite entsprechend anpasst.
LinuX007 wrote:
> Per CGI (Programmiersprache C) wird eine Hystere erzeugt, in der geprüft> wird, in welcher Größe die Parameter an den Server übergeben werden.> Sprich, ist Drehzahl zwischen 0-100, dann zeige SVG-Skript1, ist> drehzahl höher, dann zeige SVG-Skript2 usw usw. Das heißt, ich müsste> das SVG-Skript in CGI integrieren?!
SVG ist ein vektor grafikformat welches auf XML basiert. Mit Javascript
kannst du das XML/SVG im browser zur laufzeit modifizieren.
ok :)
ich habe jetzt mal nach SVG gesucht. Das ist ja dann ein statisches
Skript, in dem einfach Daten für eine Grafik drinstehen.
Das heißt, ich müsste dann per CGI im C-Quellcode die Daten für die
Grafik erzeugen und je nach Ereignis dem Web "veröffentlichen". Das
erscheint mir soweit plausibel, zudem die Grafiken richtig gut aussehen
(habe mal gegoogelt).
Ich lade mir gerade erstmal Gimp, das soll SVG unterstützen und dann
probier ich mal was aus.
Danke!
hm hab ich wohl überlesen :( das ist nicht gut, obwohl ich keinen IE
nutze...
Ich werde es einfach per Bilder machen. Bilder, die sich je ereignis
einblenden.
Danke!
Eine Idee wäre noch, das mit einem normalen (z.B. PHP) Script und der
meist schon auf dem Webserver installierten GD Library machen. Du
könntest den Hintergrund der Drehzahlmessers schön in einem
Bildverarbeitungsprogramm gestalten und auf dem Webserver ablegen. Per
GD Library kannst du dann in PHP noch den Zeiger in den Drehzahlmesser
reinzeichnen.
Das ganze würde sich mit nur wenigen Zeilen Code realisieren lassen.
Johnny wrote:
> Da hab ich übrigens mal was ähnliches realisiert:> http://www.fritigsclub.ch/Bierdeckel_Creator/E99_Bierdeckel_Creator.php
Oh Gott! Das sind die Sachen im Internet, die die Welt nicht braucht.
Sorry ;)
Trotzdem ist die Idee mit GD/ImageMagick und PHP nicht all zu schlecht
;)
LinuX007 wrote:
> Es sollte schon etwas professioneller aussehen und nicht wie eine 0-8-15> HTML-Seite ;)
Tja, dafür bist du selber verantwortlich und nicht irgendein CGI Script
;)
Wieso sagst Du das braucht die Welt nicht?
Jetzt hat er doch gerade von meinem Knoff Hoff profitieren können.
Und schau Dir mal die grafischen Codes im Internet an für den
"Menschlichkeitstest", die sind alle auch genau so gemacht. Also lass
Deine verachtenden Beleidigungen und mach erst mal was besseres.
Johnny wrote:
> Wieso sagst Du das braucht die Welt nicht?> Jetzt hat er doch gerade von meinem Knoff Hoff profitieren können.
Wenn du das PHP Script zum Download bereitstellen würdest, könnte er das
tatsächlich sogar!
> Und schau Dir mal die grafischen Codes im Internet an für den> "Menschlichkeitstest", die sind alle auch genau so gemacht.
Jau, die braucht die Welt ja auch nicht ;)
> Also lass> Deine verachtenden Beleidigungen und mach erst mal was besseres.
Ich soll was besseres machen.
Jaja, ich sag ja nicht dass du das schlecht gemacht hast. Übung hat es
dir sicher gebracht.
Wie auch immer, war nicht all zu ernst gemeint, wobei aber das Internet
durchaus mit solchen Seiten mal abspecken könnte *HUST.
Johnny wrote:
> Zeig mir was Du besseres geleistet hast als das oder halt die Fresse.
Also so bestimmt nicht. Ist er nicht süß!? ;)
Nichts gegen dich oder deine Arbeit, aber sowas ist mit Sicherheit kein
Problem für einen fortgeschrittenen PHP-Programmierer.
Im Prinzip die PHP Basics: Formulardaten entgegennehmen/auswerten und
ein bisschen mit den GD-Funktionen arbeiten. Dann noch als Grafikstream
ausgeben (inkl. korrektem Header) und fertig ist die Kiste.
Aber im Prinzip ist es genau das, was er braucht.
Nur bedeutet der von Simon erwähnte Ansatz, daß der Browser zyklisch die
Seite (oder mindestens einen iframe) komplett neu laden muss, damit eine
"dynamische" Wertedarstellung erreicht werden kann.
Das geht mit "Ajax" anders, hier läuft auf dem Client, also /im
Browser/ ein Script, das per XMLHttpRequest zyklisch Daten vom Browser
abholt und diese in der bereits geladenen Seite aktualisiert. Das
bedeutet einerseits, daß weniger Daten übertragen werden müssen, und
andererseits, daß die Aktualisierungen ohne Geflacker vonstatten gehen.
Anders, als der Name suggeriert, muss hier auch gar kein XML verwendet
werden; die Art und Weise, auf die die übertragenen Nutzdaten verpackt
werden, ist völlig irrelevant, nur muss das clientseitige Script in der
Lage sein, die Daten zu verdauen.
oh je oh je ^^
Ich merke schon, mein Thread sorgt für (soziale) Aufregung, mehr, als
das Thema selbst.
Jetzt nochmal sachlich:
- Ich werde es vorerst so machen: ich habe mehrere Bilder, die
nacheinander über den Webserver veröffentlicht werden.
- Wenn das funktioniert, werde ich es mit SVGs machen. Im CGI-Skript
muss dann das SVG-Skript stehen, das je nach Ereignis "verändert" wird
und somit eine andere Grafik in Echtzeit beim Client "erzeugt".
Nun habe ich aber noch folgendes Problem auf meinem Apache-Webserver,
vielleciht kann mir hierzu jemand eine Antwort geben:
Ich habe nun in eine Datei namens "teste_skript.c", die in einem von mir
erstellten Ordner "cgi-bin" auf meinem Webserver liegt versucht, diese
Datei mit dem Befehl "gcc -o
/var/www/apache2-default/cgi-bin/teste_skript.c
/var/www/apache2-default/cgi-bin/teste_skript.cgi" zu kompilieren.
Dann kommt folgender Fehler: "gcc: No such file or directory", "gcc: no
input files".
Hier der Code des "teste_skript.c" (es ist ein Codebeispiel des Buches
"C von A-Z" von Gailieocomputing):
1
#include<stdio.h>
2
#include<stdlib.h>
3
/* Die Kopfzeile eines Standard-HTML-Dokuments
4
* titel: String, der als Titel erscheinen soll
5
*/
6
voidprint_html_header(char*titel){
7
printf("<html><head>\n");
8
printf("<title>%s</title>\n",titel);
9
printf("</head><body><pre>\n");
10
}
11
/* Das Ende eines HTML-Dokuments */
12
voidprint_html_end(void){
13
printf("</pre></body></html>\n");
14
}
15
/* Damit überhaupt ein HTML-Dokument ausgegeben wird */
16
voidprint_header(void){
17
printf("Content-Type: text/html\n\n");
18
}
19
intmain(void){
20
char*p;
21
print_header();
22
print_html_header("Wer bin ich?");
23
p=getenv("HTTP_USER_AGENT");
24
if(p!=NULL)
25
printf("Sie browsen mit : %s\n",p);
26
else
27
printf("Konnte HTTP_USER_AGENT nicht ermitteln!\n");
> Ich habe nun in eine Datei namens "teste_skript.c", die in einem von mir> erstellten Ordner "cgi-bin" auf meinem Webserver liegt versucht, diese> Datei mit dem Befehl "gcc -o> /var/www/apache2-default/cgi-bin/teste_skript.c> /var/www/apache2-default/cgi-bin/teste_skript.cgi" zu kompilieren.> Dann kommt folgender Fehler: "gcc: No such file or directory", "gcc: no> input files".> Woran kann das liegen?
Weil der Syntax lautet: gcc -o OUTPUTFILE inputfile (s. man gcc)
d.h. er versucht "teste_skript.cgi" zu kompilieren, was aber noch nicht
existiert... Vertausch mal beides.