Tina: Vorgegebenes Applett (ganz) durch SVG ersetzen

Beitrag lesen

Hallo
ich habe das mal 'auseinandergemessen' - zu erklären ist das aber fast garnicht. Um einigermaßen in die Richtung zu finden stelle ich mal eine Hardwarebeschreibung voran. Es handelt sich um SPS Ethernet-Kommunikationsprozessoren die als Erweiterungsbaugruppe angeschlosen es in zwei Ausführungen gibt:
1.)  die 'einfachere' Variante mit Programmier & Datenschnittstelle
2.) und das aufgebohrte Modell was zusätzlich aller Funktionen von 1 noch Webserver und FTP (sowie einigen Kleinkram) mitliefert.

1 & 2 verhalten sich in allen gemeinsam vorhandenen 'Funktionen' identisch. So gibt es bei beiden die Möglichkeit über die Daten/Programmierschnittstelle über einen irgendwo im Netzwerk vorgeschalteten Webserver und darauf gestarteten passenden Programm die Daten jeweils auch auszulesen. Nachteil dabei: Die Programmierschnittstelle wäre dauerhaft blockiert.
Bei der Webserver Variante ist dieses dann zudem 'doppeltgemoddelt' - allerdings kann in dem einzig zugängigen 'userspace' im Flashspeicher zum Webserver keinerlei Anwendung /Script gestartet, sondern nur Daten abgelegt werden.

Als erste 'Stufe' ergab sich so bereits vor Längerem über ein per <object>-Tag in htm eingebundenes SVG eine cgi auf einem ausgelagerten Webserver zu starten welches die Daten ausliest und dann zurückgibt. Dieses Modell sieht stark verkürzt und 1:1 nach dem codebook-Beispiel so aus:

<script type="text/javascript">
      <![CDATA[
var svgdoc;
function Init(evt)
{
  svgdoc=evt.target.ownerDocument;
}
HoleDaten();
function HoleDaten()
{
  if(window.getURL)getURL("cgi-bin/su243.cgi",callback);
  else alert("Ohne diese Technik leider kein Erfolg!");
}
function callback(urlRequestStatus)
{
  /*
    Rueckgabewerte des objectes urlRequestStatus:
    - urlRequestStatus.success;
    - urlRequestStatus.contentType;
    - urlRequestStatus.content;
  */
  var ausgabe;
 var slang;
  if(urlRequestStatus.success)
  {
    ausgabe=urlRequestStatus.content.split("|");
 slang=ausgabe[0];
    alert("Its make me"+slang+"-mal happier");

setTimeout('HoleDaten()', 750);
}
}
      ]]>
    </script>

Das funktioniert, im su243.cgi ist Bibliothek eincompiliert die notwendige Codierung leistet - die Variante 2 mit Webserver versucht sich dann daran in ihrer 'Werkseinstellung' Ähnliches per Applets zu lösen.

Dabei greift das Applet jeweils den ähnlichen Ablauf auf wie die externen Bibliotheken - und, anders wie bisher gedacht, übernimmt es dabei auch die komplette (de)codirung zu übergebender Parameter. Es muß also nicht wie von mir zuerst gedacht nur ein array aus 6-Bytes übergeben werden, sondern zusätzlich aus diesem Array dann ein je nach Anwendungsfall passender 60 -x100Bytes langer Hex-String errechnet werden. Dieser wird dann von den internen 'Komponenten' geprüft, wenn richtig angenommen, der Rückgabewert geliefert und erst nach einer weiteren Bestätigung des Erhalts 'freigeben'.

Insofern bleibt mir nur es zuerst auf meinem externen 'Kommunikationserver' nachzubauen. Dortige 'C'-Server habe ich schon und weiß wie die gehen. Mein Versuchsmodell ist auf port 1234 gestartet und rückt per telnet auch per Kommandozeile erwünschte gewünschte Daten (bspw. Bereich:0x82) 'heraus', das funktioniert also.

Rausfinden müßte ich nun wie ich auf meinen Versuchsserver 'grapsvr' nun per XMLHTTPRequest zugreife ?????
Mit der Zeile'getURL("grapsvr 1234 0x82",callback); (oder in diverser anderer Synthax probiert) gibt der nichts preis. Das muß irgendwie anders gehen.
Auch weiß ich noch nicht wie es in den Verzeichnissen einzuordnen ist, das 'cgi/script' liegt ja immer im Bereich der vordefinierten Schnittstelle des Webservers (hier HTTPd) - adäquat der Appletfunktion ist das nun ja aber ja evtl. anders: Der Browser holt das html-SVG (<object>) zwar vom Webserver baut dann aber ja mit dem HTTPRequest zu dem Server an Port 1234 die Verbindung auf. Die Attribute stimmen (lt. 'Handbuch':alle readable)  - connected meldet der Sever auch (manchmal) noch aber dann kommt nichts mehr zurück.
Da muß ich an dem Versuchserver noch etwas feilen, aber toll wäre wenn ich in Erfahrung bringen könnte inwieweit ich mit meinem gedachten Aufruf des (in den ja schon laufenden Server - ich will den ja nicht starten ...) einigermaßen richtig oder ganz falsch liege ?
Grüße
Tina