Details zum HTTP-Server in CAN-Anzeige-Terminals von MKT Systemtechnik
Datei: cproj/UPT_xx/http_server_info/srv_info_49.htm (in deutscher Sprache)
Web: http://www.mkt-sys.de/http_server_info/srv_info_49.htm
Autor: Wolfgang Büscher, MKT Systemtechnik
Stand: 2018-08-15 (ISO8601)
Inhalt
-
Aufbau einer Verbindung zum Web-Server
-
Funktionen und Webseiten des Servers im programmierbaren Terminal
- Startseite des Web-Servers ('Main' page)
- Fernwartung / Fernbedienung ('Remote Control' page)
- Debugging Tools im Webserver (Trace, Script, Variable Dump)
- 'Device Setup' (Gerätekonfiguration per Webserver)
- 'Network Setup' (Netzwerkkonfiguration im Webserver)
- DHCP, Statische vs dynamische IP-Adressen, Hostname
- CAN-via-UDP, FlexRay-via-UDP
- Auslesen des optionalen Wireshark-kompatiblen 'Packet Capture'-Buffers
- Zugriff auf das (Pseudo?-) Dateisystem per HTTP
- Root-Verzeichnis des Pseudo-Dateisystems
- Der 'Daten'-Flash-Bereich (files/data_flash)
- Der 'Audio'-Flash-Bereich (files/audio_flash)
- Der 'Font'-Flash-Bereich (files/font_flash)
- Dateien auf der Speicherkarte (files/memory_card)
- Dateien in der RAMDISK (files/ramdisk)
- Hochladen von Dateien (Firmware und Display-Applikation)
- Dateien zum Hochladen auswählen
- Dateien nach dem Hochladen verarbeiten
-
Spezielle Schlüsselwörter in den HTML-Vorlagen
-
Spezielle Dateinamen im HTTP-Server
- Auslesen des Grafikspeichers (framebuffer) als Bitmap-Datei
- Senden von Maus- und Tastatur-Events (für die Fernsteuerung)
- Remote-Aufruf von Kommandos des Display-Interpreters
- Remote-Aufruf des Interpreters zur Berechnung von Ausdrücken
- Auslesen des optionalen Wireshark-kompatiblen 'Packet Capture'-Buffers
-
Troubleshooting
- Konfigurieren von Windows 7 zum Aufbau einer Punkt-zu-Punkt-Verbindung per Ethernet-Kabel (ohne Router)
-
Links und weitere Informationen
Dieses Dokument enthält einige Informationen für Entwickler, die den in einigen von MKT's CAN-Anzeigesystemen
vorhandenen Web-Server für eigene Zwecke einsetzen wollen.
Darüberhinaus richtet sich dieses Dokument auch an Anwender, die Probleme mit dem Aufruf des Web-Servers
per Web-Browser haben (z.B. Betrieb des Web-Servers ohne DHCP, usw).
Die HTML-Seiten, die der Web-Server im Internet-Browser des Anwenders anzeigen kann, befinden sich
-bis auf wenige Ausnahmen- im ROM des Gerätes. Daher können die meisten Seiten nicht ohne neues Compilieren
der Firmware modifiziert werden.
Dynamische Inhalte werden, wie später in diesem Dokument beschrieben, von der Firmware (oder auch vom
Anwenderprogramm!) beim Auslesen der Webseite erzeugt, und in geeigneter Form an den Web-Browser übergeben.
Falls Sie dieses Dokument durch Anklicken eines 'Help'-Buttons geöffnet haben:
Dieses Dokument (srv_info_xy.htm) befindet sich nicht im ROM des Anzeigegerätes, sondern
auf der Webseite des Herstellers (MKT Systemtechnik).
Höchstwahrscheinlich enthielt eine der im Web-Server enthaltenen Seiten einen Link auf dieses Dokument,
welches bis auf Weiteres auch als 'Hilfesystem' für die Bedienung des Webservers dient.
Software-Entwickler und Applikateure finden in diesem Dokument Tipps, wie der Web-Server für eigene
Zwecke verwendet werden kann, z.B. zur Fernsteuerung des Anzeigegerätes.
Mehr dazu im Kapitel 'Fernbedienung' (Remote Control).
Abhängig von den Einstellungen im 'Network Setup' des Gerätes gibt es verschiedene Möglichkeiten
um per Browser eine Verbindung mit dem Webserver aufzubauen:
- Falls DHCP verfügbar ist:
- Geben Sie den Gerätenamen ("Hostnamen") in der Adressleiste des Browsers ein.
Bei allen UPTs (User Programmable Terminals, dazu gehört auch das MKT-View II + III),
ist der Hostname per Default auf UPT eingestellt, und DHCP ist aktiv.
Stellt sich der Browser bei der Eingabe etwas dämlich an, und 'googelt' nach dem Hostnamen (statt damit eine Verbindung aufzubauen),
oder ergänzt ihn zu 'www.upt.com', versuchen Sie dem Browser diesen Unfug abzugewöhnen (*),
oder geben Sie eine komplette URL wie z.B. http://UPT ein .
Hinweis: Der Name (hostname) "UPT" ist nur im lokalen Netzwerk gültig. Es handelt sich hier nicht um eine 'WWW'-Adresse !
- Falls DHCP nicht verfügbar ist (und stattdessem eine feste IP-Addresse verwendet werden muss):
- Geben Sie die (numerische) IP-Adresse des Gerätes in der Adressleiste des Browsers ein. Bei älteren UPTs (User Programmable Terminals, incl. MKT-View)
war die feste IP auf 192.168.0.243 voreingestellt, und kein DHCP verfügbar.
Details zum Betrieb von Geräten ohne DHCP finden Sie hier. Der Zugriff auf Geräte ohne DHCP
über dessen Host-Namen war unter Windows oft schwierig - wie man dieses Problem lösen kann, finden Sie in einem Microsoft-Artikel
mit dem Titel 'Cannot Connect to Remote Systems Using Host Name'
(nur für Fortgeschrittene - daher die Empfehlung, statt eines langen Kampfes mit der DNS-Konfiguration oder dem Editieren der
'hosts'-Datei das Gerät gleich über dessen numerische IP-Adresse anzusprechen).
- Wenn DHCP verwendet wird (d.h. eine variable IP-Adresse), aber der Hostname vom Browser nicht aufgelöst werden kann:
- Versuchen Sie selbst, die dem Gerät aktuell zugewiesene IP-Adresse herauszufinden,
und geben diese (numerisch) in der Adressleiste des Browsers ein.
Dazu wird die aktuelle (per DHCP geleaste) IP-Addresse für wenige Sekunden im Display angezeigt (sofern dies nicht per
Konfiguration
unterbunden wurde). Beispiel:
DHCP: local IP = 192.168.0.114
hostname = 'UPT'
|
Für das oben gezeigte Beispiel sollte eigentlich die Eingabe des Hostnamens UPT (ohne Hochkomma!),
oder notfalls 192.168.0.114 in der Adressleiste des Browsers ausreichen. In der Browser-Steinzeit musste eine vollständige
URL mit dem Namen des Protokolls eingegeben werden, z.B. http://UPT/index.htm bzw http://192.168.0.114/index.htm .
- Wenn das programmierbare Gerät (UPT) 'weit entfernt' ist, außerhalb des eigenen LANs, dann kann es nur per 'Internet' kontaktiert
werden.
- Fragen Sie bitte in diesem Fall Ihren Netzwerk-Administrator, ob (und wie) der vorhandene DSL-Router oder vergleichbares Equipment
so konfiguiert werden kann, um das UPT mit einer eigenen, weltweit nur einmal verwendeten 'Internet-IP' zu verbinden. Dazu muss in
fast allen Fällen auch die im Router integrierte Firewall umkonfiguriert, und ein neuer
NAT-Eintrag (Network Address Translation)
im Router hinzugefügt werden. Der Router selbst hat eine 'eigene' IP-Adresse, und um Anfragen an das UPT durchzureichen, erhält dieses
im Router eine eigene Portnummer. Anfragen aus dem Internet werden dann vom Router per NAT an das UPT (mit Port 80 für HTTP) durchgereicht.
Die IP-Adresse des Routers (d.h. 'weltweite' IP-Adresse, die zum Zugriff aus dem Internet verwendet wird), unterscheidet sich IMMER
von der lokalen IP-Adresse. Dem Display (UPT) ist die 'weltweite' IP-Adresse des Routers nicht bekannt, und für den HTTP-Server auch belanglos.
In Kurzform: Im Auslieferungszustand werden alle UPTs (auch MKT-View II, III) mit aktivierten DHCP, und dem Hostnamen "UPT" ausgeliefert.
Es sollte daher -sofern im lokalen Netz ein DHCP-Server verfügbar ist- per Browser durch Eingabe der Adresse UPT erreichbar sein.
Der Hostname wird in vielen Fällen vom Anwender allerdings im
Network Setup
des programmierbaren Gerätes umgestellt. Sollen mehr als zwei Geräte dieses Typs im gleichen Netzwerk betrieben werden, ist die Änderung
des Hostnamens unerlässlich.
- (*)
Um Firefox das nervtötende Einfügen von 'www.' am Anfang, und '.com' am Ende der Adresse,
und die automatische Google-Suche per Adressleiste(!) abzugewöhnen,
setzen Sie unter 'about:config' den Wert von
- browser.fixup.alternate.enabled
auf false. Aus der Eingabe von z.B. 'upt' wird dann nicht mehr automatisch 'www.upt.com',
und der Browser schaltet nicht zu unerwünschten Webseiten um, wenn das Gerät mit dem angegebenen
Hostnamen momentan nicht erreichbar ist.
Nachtrag (2014): Um Firefox diesen groben Unfug abzugewöhnen, suchen Sie im Netz z.B. nach
"Firefox: Browser Suche für Doofe abschalten".
Zitat:
> Wie oft hat mich das schon geärgert! Ich gebe in der Adressleiste des Browsers
> einen lokalen Servernamen an und werde statt dessen mit der Google Suchseite verbunden.
> Google sagt mir dann wo ich günstig NAS Geräte oder HP-Drucker kaufen kann. [Argh!!]
> Danke Google, Danke Firefox, Danke IE! – Ich bin nicht doof!
> Wenn ich etwas suchen möchte, dann verwende ich die Suchleiste oder gehe direkt zu Google. (..)
Dem ist wenig hinzuzufügen.
Leider funktionierte der o.g. Trick mit Firefox Version 31 nicht mehr,
um die völlig überflüssige Google-Suche per Adressleiste zu unterdrücken:
Dort musste stattdessem (? - oder zusätzlich) per "about:config" der Wert "keyword.enabled" auf "false" gesetzt werden.
Das UPT-Programmiertool kann notfalls auch den Web-Server emulieren, um dessen Funktionalität auch ohne 'echte' Hardware zu testen.
Um den Web-Server im Programmiertool zu emulieren, muss in vielen Fällen die Firewall (im PC) entsprechend
konfiguriert werden, bevor das Programmiertool mit der Option 'Embedded Web Server emulieren' neu gestartet wird.
Die Option zur Emulation des Web-Servers finden sie (zusammen mit dessen Port-Nummer) auf der Registerkarte 'Einstellungen'
unter 'Einstellungen des Programmiertools':
(Screenshot aus dem UPT-Programmiertool, 'Settings', 'Programming Tool Settings')
Wenn Programmiertool und Web-Browser auf dem gleichen PC laufen, dann kann der Server durch Eingabe der 'lokalen' Dummy-IP-Adresse
in der Adressleiste des Browsers angesprochen werden:
http://127.0.0.1 .
Verwendet der Web-Server nicht den Default-Port (80 für HTTP), dann muss die Port-Nummer an die Adresse angehängt werden, z.B.:
http://127.0.0.1:81 .
Um Speicherplatz zu sparen, kann das Terminal nur jeweils eine HTTP-Anfrage zu einem einzelnen Zeitpunkt bedienen.
Das verwendete Protokoll ist HTTP/1.0, basierend auf einer einfachen und kompakten TCP/IP-Implementierung (LwIP).
Da der TCP/IP-Protokoll-Stack gleichzeitig auch für andere Zwecke (z.B. CAN-via-UDP) verwendet wird, hängt die
Geschwindigkeit des HTTP-Servers davon ab, welche Aufgaben die CPU noch "nebenher" verrichten muss.
Der Web-Server unterstützt die Methoden HTTP GET und POST. GET dient zum Lesen von "Dateien" (hier i.A. HTML-Dokumente),
die ein Web-Browser (Client) vom Server anfordert. POST dient zum Abschicken von Formulardaten, aber auch zum
Hochladen einzelner Dateien (vom Client zum Server).
Die nächsten Abschnitte beschreiben einige der HTML-Dokumente ("Seiten"), die fest in der Gerätefirmware verankert sind.
Die hier angeführten Links zu den Seiten 'im' Web-Server funktionieren nur, wenn...
- Das Gerät (Anzeige-Terminal, UPT, MKT-View) per Ethernet/LAN erreichbar ist;
- der Gerätename (Hostname) noch wie im Auslieferungszustand auf 'UPT' gesetzt ist;
- DHCP und NetBIOS-kompatibles Auflösen von Hostnamen im Netzwerk verfügbar ist;
- der Web-Server nicht durch Null-Setzen der HTTP-Port-Nummer im Network Setup abgeschaltet wurde
(bitte daran erinnern; der HTTP-Server könnte in manchen Firmen aus Sicherheitsgründen abgeschaltet worden sein)
Diese Seite (upt/index.htm oder einfach nur UPT per Default)
zeigt den aktuellen Bildschirminhalt des Gerätes, periodisch ohne Javascript aktualisiert.
Bei manchen Browsern kann die Darstellung während der Aktualisierung flackern. Mit Firefox V14.0.1 gab es kein Flackern.
Mit dem 'Internet Explorer' war die Darstellung nicht akzeptabel.
(Abbildung der 'Hauptseite' des im MKT-View II integrierten Web-Servers)
Aufgrund der Abwesenheit von Javascript ist auf dieser Seite keine Fernsteuerung möglich,
Mausklicks auf der Anzeige des Grafikbildschirms im Browser haben daher keinen Effekt.
Diese Seite (upt/remctrl.htm per Default)
zeigt ebenfalls den aktuellen Bildschirminhalt des Gerätes, periodisch per Javascript aktualisiert.
Auf allen getesteten Browsern war die Darstellung flackerfrei. Sie erfordert allerdings (leider) Javascript,
was auch zur Simulation von Touchscreen-Ereignissen per Maus (im Browser) dient.
Der Hauptzweck dieser Seite ist die Fernbedienung des Gerätes (UPT, MKT-View, etc) per LAN-Verbindung,
wozu lediglich ein normaler Web-Browser, aber keine spezielle Software nötig ist.
Dies ist auch für Präsentationen hilfreich, wenn z.B. der Bildschirminhalt per Beamer angezeigt wird.
Zur Bedienung dient die Maus (und ein kleines, im Browser laufendes Javascript), als Ersatz für
den Touchscreen des Gerätes. Einige Tasten des PCs (auch die Cursortasten) werden ebenfalls per Javascript
an das entfernte Gerät durchgereicht.
Für die Fernbedienung muss (vor dem Aufruf der 'Remote Control'-Seite) unbedingt Javascript im Browser aktiviert werden.
Folgen Sie danach dem unten gezeigten Link zur 'Remote Control'-Seite.
Wenn DHCP (und NETBIOS) im
Network Setup
des Gerätes aktiviert sind, und ein DCHP-Server (z.B. im LAN/DSL-Router) zur Verfügung steht, geben Sie
upt/remctrl.htm (Default-Name für "User Programmable Terminal") als Adresse im Web-Browser ein.
Auf der 'Remote Control'-Seite sehen Sie ein Bild (Bitmap) mit dem aktuellen Inhalt des Video-RAMs des programmierbaren Terminals.
Für die Übertragung werden die Pixeldaten komprimiert, was z.T. einige hundert Millisekunden dauert, und zu einer nicht ganz
'ruckelfreien' Darstellung führt (speziell beim MKT-View II).
Ein Mausklick in dieses Bild emuliert ein 'Touchscreen-Event'. Graphische Buttons auf der aktuellen Anzeigeseite,
aber auch die virtuelle Tastatur ("Bildschirmtastatur" für Geräte mit Touchscreen) können so bedient werden.
Tastatureingaben im Web-Browser werden z.g.T. per Javascript an das entfernte Gerät übertragen. Dazu zählen die Cursortasten, ENTER, ESCAPE (=Abbruch),
die Funktionstasten F1 bis F3 (eventuell auch mehr). Zumindest mit Firefox funktionierte die Fernbedienung per Tastatur zufriedenstellend.
Andere Browser wurden nicht getestet.
Um das 'System-Menü' des Terminals zu öffnen, würden Sie normalerweise F2 und F3 auf der Tastatur des CAN-Anzeigeterminals
gleichzeitig drücken. Im Web-Browser (auf dem PC) funktioniert dies i.A. nicht. Als Ersatz dient die 'Windows'-Taste, oder die 'Menü'-Taste
(neben der rechten STRG-Taste) beim PC. Auf einem MAC verwenden Sie stattdessem die 'Apple'-Taste (dies wurde allerdings nie getestet).
Auf der defaultmäßig vorhandenen 'Remote Control'-Seite (beim Aufruf vom PC, mit 'großem' Browser-Bildschirm(*) )
befindet sich im unteren Teil ein Panel, welches für Software-Tests gute Dienste leisten kann:
Screenshot der Testfunktionen im unteren Teil der 'Remote Control'-Seite.
(*) Diese Funktion ist bei der Darstellung auf einem Smartphone nicht verfügbar.
Im Feld namens 'Command' kann ein Kommando für den Display-Interpreter eingegeben werden. Per Klick auf 'Submit' ('Abschicken')
wird dieses Kommando an das fernbediente Terminal (UPT, MKT-View, etc) gesendet und dort ausgeführt. Einige Millisekunden später
sendet das Terminal per TCP/IP eine Antwort, die dann im 'Response'-Feld als Text angezeigt wird.
Das Feld mit dem Titel 'Watch-Expression' kann wie das Fenster 'Überwachte Ausdrücke' (Watches) im Programmiertool verwendet werden:
Hier kann ein numerischer Audruck für den Display-Interpreter eingegeben werden, der dann zur Auswertung periodisch an das Display
übertragen wird, dort "berechnet", und das Ergebnis wieder zurück an den Browser geschickt wird.
Das Resultat (=das "berechnete" Ergebnis des Ausdrucks) wird im Feld 'Watch-Result' angezeigt. Um mehrere Ausdrücke gleichzeitig
berechnen zu lassen, trennen Sie diese im Feld 'Watch-Expression' per Komma. Die Resultate werden ebenfalls per Komma getrennt.
Aufgrund des kleinen Bildschirms wird beim Aufruf der 'Remote-Control'-Seite auf Mobilgeräten (z.B. Smartphones)
nur der periodisch übertragene Framebuffer, und einige wenige Buttons für die Navigation (am rechten Rand) angezeigt:
Screenshot der 'Remote Control'-Seite auf einem Smartphone.
Links der periodisch übertragene Framebuffer (Bildschirminhalt).
Der Button 'Main' schaltet von der 'Remote Control'-Seite wieder zur Hauptseite um.
Per 'Shdn' kann (bei Steuerung per Smartphone) das Shutdown-Fenster
im fernbedienten Gerät geöffnet werden.
Weitere Buttons dienen (bei Steuerung per Smartphone) als Ersatz für die Cursortasten, Enter, und Escape.
Bei Verwendung eines PC-Browsers sind diese Buttons überflüssig, weil die PC-Tastatur-Ereignisse per Javascript
an das fernbediente Gerät gesendet werden.
Technisches Detail: Der Webserver erkennt den Typ des 'Besuchers' (Smartphone oder PC mit 'großem' Bildschirm)
an dessen 'User-Agent'-Header (Zeichenkette).
Bei modernen Browsern wie z.B. Firefox oder Chrome ist es möglich, den User-Agenten gegenüber der
besuchten Webseite zu verschleiern (in der englischen Wikipedia: user agent spoofing).
So kann -auch für selbsterstellte Webseiten- dem Server zu Testzwecken z.B. ein Smartphone 'vorgegaukelt' werden.
Im März 2015 wertete der Web-Server im MKT-View III/IV nur die folgenden Zeichenketten im 'User-Agent'-Header
für die Erkennung von Mobilgeräten (Tablets, Smartphones) aus:
"Android", "BlackBerry", "Mobile".
Der Webserver enthält einige Tools zur Fehlersuche (Debugging), d.h. für die Hilfen für die Software-Entwicklung.
Dazu gehören:
- Die Trace-Historie (upt/trace.htm per Default) :
Ermöglicht das Inspizieren der Trace History per Browser.
Dazu gehören, je nach Konfiguration und Programmierung, aus Sicht des Terminals empfangene und gesendete CAN-Telegramme,
Meldungen aus dem Script-Programm, usw.
- Die Variablen-Anzeige (upt/var_dump.htm per Default) :
Zeigt die Namen und aktuellen Werte aller Anzeige-Variablen an.
- Die Script-Seite (upt/script.htm per Default) :
Zeigt diverse Informationen über das im Gerät ablaufende Script an,
und enthält einen primitiven 'Remote-Debugger' mit dem z.B. die aktuelle Programmzeile im Quelltext angezeigt werden kann.
Die anzuzeigenden Elemente können per Anhang (in der URL) spezifiziert werden, z.B.:
<hostname>/script/a = zeige alles
<hostname>/script/g = zeige gobale Script-Variablen
<hostname>/script/r = zeige Resourcen (freier Speicher, etc)
<hostname>/script/s = zeige Stack
<hostname>/script/d = zeige Debugger (Quelltext-Debugger mit Breakpoints, Single-Step, etc)
Hinweis: "UPT" ist lediglich der Default-Hostname. Der Hostname Ihres Gerätes könnte
per Network Setup modifiziert worden sein.
(Anzeige der Seite 'Script Inspector' in einem modernen Browser anno 2013)
Die Option 'Periodic Update' dient zum zyklischen Aktualisieren der Anzeige.
Bei einigen Browsern wird bei jedem Neuladen die vertikale Scrollposition leider
wieder an den Dateianfang zurückgesetzt, was die Bedienbarkeit stark einschränkt.
Gut geeignet erschien im Oktober 2013 der 'Iron'-Browser (ein 'Chrome'-Clone mit angeblich mehr Schutz der Privatsphäre).
Der fernbediente Script-Debugger erfordert keinerlei spezielle Software - er läuft komplett im Web-Browser,
und wird vom Browser zusammen mit dem für die Steuerung verwendeten Javascript beim Aufruf der Seite "script/d"
aus dem programmierbaren Gerät (z.B. MKT-View II,III) geladen.
Dazu ist keine Internet-Verbindung nötig, denn alle benötigten (Java-)Scripte sind im ROM des Gerätes abgelegt.
Das folgende Beispiel zeigt eine Script-Funktion (hier: ein Timer-Event-Handler aus dem zyklisch CAN-Telegramme gesendet werden),
die mit Hilfe eines Breakpoints (in Zeile 129, rot markiert) gestoppt wurde, und danach im Einzelschritt-Modus
(single step) in Zeile 130 fortgesetzt wurde (grün markiert).
Source-level debugger (script/d)
123:
124: //--------------------------------------------------------------------
+ 125: func OnCANtxTimer( tTimer ptr pMyTimer ) // a TIMER EVENT HANDLER...
+ 126: local tCANmsg msg; // use LOCAL variables (not globals) in event handlers !
+ 127: msg.id := 0x335; // set CAN message identifier for transmission
+ 128: msg.len:= 8; // set CAN data length code (max. 8 bytes = 2 doublewords)
* 129: msg.dw[0] = 0x11223344; // set four bytes in a single doubleword-move (faster than 4 bytes)
> 130: msg.dw[1] = 0x55667788; // set the last four bytes in the 8-byte CAN data field
+ 131: can_transmit( msg ); // send the CAN message to the bus
+ 132: return TRUE; // TRUE = 'the event has been handled here' (FALSE would not fire more timer events)
○ 133: endfunc; // OnCANtxTimer()
134:
135:
Haltepunkte (breakpoints) können im Normalbetrieb umgeschaltet werden.
Dazu dient ein Doppelklick auf die entsprechende Zeilennummer (in den meisten Browsern);
oder (bei Browsern, die per Doppelklick nicht automatisch ein einzelnes Wort markieren)
durch Markieren der Zeilennummer per Maus, beim Loslassen der Maus.
Ein Stück Javascript sendet beim Loslassen der Maustaste ein entsprechendes Kommando (per HTTP) an den Debugger.
Aus diesem Grund funktioniert der fernbediente Debugger nur, wenn im Browser Javascript ausgeführt werden darf.
Mit dem Internet Explorer funktioniert der Debugger nicht (Grund: Cachen von "AJAX"-Antworten, dier per Javascript
mit dem 'XmlHTTPRequest'-Objekt angefordert wurden). Verwenden Sie einen besseren Browser (Firefox, Chrome, Iron).
Die Indikatoren am linken Rand der Quelltext-Anzeige (auf der Seite 'script/d' = Quelltext-Debugger)
weichen etwas von den Symbolen im
UPT-Programmiertool ab,
weil dort Bitmaps, hier aber einfache Zeichen
verwendet werden:
- Nur Leerzeichen vor der Zeilennummer: "Kein Code in dieser Zeile."
- In dieser Zeile steht kein ausführbarer Code; hier kann kein Breakpoint gesetzt werden.
- o : "Hier war das Programm noch nicht."
- Diese Zeile enthält zwar ausführbaren Code, das Script hat diese Zeile aber
seit dem Start der Debugger-Sitzung, oder seit dem Löschen der "War-schon-hier"-Marker
noch nicht abgearbeitet.
- + : "Ich war schon hier."
- Diese Zeile enthält ausführbaren Code, der schon mindestens einmal abgearbeitet wurde,
seitdem die Debugger-Sitzung begonnen wurde, oder seitdem die 'Been-Here'-Marker gelöscht wurden.
Hinweis: Solange keine Debugger-Sitzung gestartet wurde, werden die 'Been-Here'-Marker nicht aktualisiert,
weil die Abarbeitung des Script-Programms dadurch geringfügig langsamer wird.
Beim Ausloggen ('Log Out') wird auch die Debugger-Sitzung beendet, und das Script läuft
mit der maximal möglichen Geschwindigkeit weiter.
- x : Breakpoint in einer Zeile, die noch nicht abgearbeitet wurde.
- Diese Zeile enthält ausführbaren Code in der ein Breakpoint gesetzt wurde,
sie wurde aber (wie 'o') noch nicht abgearbeitet.
- * : Breakpoint in einer Zeile, die mindestens einmal abgearbeitet wurde.
- Diese Zeile enthält ausführbaren Code in der ein Breakpoint gesetzt wurde,
und sie wurde (wie '+') schon mindestens einmal abgearbeitet.
- > (spitzer Pfeil nach Rechts) : Aktuelle Programmzeile
- Zeigt die aktuelle (oder die nächste) auszuführende Zeile an.
Hinweis: Der Programmzähler wird i.a. bereits auf den nächsten abzuarbeitenden Befehl gesetzt,
bevor der Befehl abgearbeitet wurde.
Siehe auch: Debuggen mit dem UPT-Programmiertool
Auf dieser Seite (upt/setup.htm per Default)
kann die Konfiguration des programmierbaren Terminals geändert werden, was (ohne Web-Server) sonst nur
im 'System-Setup' des Gerätes möglich ist. Bei Geräten ohne Tastatur, Encoder, oder Touchscreen stellt
der Web-Server manchmal die einzige Möglichkeit zum Konfigurieren des Gerätes dar.
(Abbildung der Webseite 'Device Setup via Embedded Web Server')
Vor dem Ausfüllen und 'Absenden' des Formulars ('Submit') muss das Passwort eingegeben werden.
Nach dem Absenden des Formulars mit einem korrekten Passwort schaltet das Passwort-Panel
von blau auf grün um;
bei falschem Passwort auf rot.
Das Passwort selbst hängt von der Hard- und Software ab; es könnte auch kundenspezifisch sein.
Sie finden das Passwort in der Beschreibung, die zusammen mit dem Gerät ausgeliefert wird.
Anwender von MKT's Programmiertool kennen das (Default-)Passwort bereits: Es ist das gleiche wie beim Firmware-Update per RS-232.
Diese Seite (upt/nwsetup.htm falls noch der Default-Hostname verwendet wird)
dient zum Einstellen der Netzwerk-Konfiguration (Ethernet, TCP/IP, UDP).
(Screenshot der Seite 'Network Setup via Embedded Web Server')
Das Passwort ist das gleiche wie beim 'Device Setup'.
Die Parameter auf diesem Formular sind in Dokument #85115, "System Setup", beschrieben.
- Hinweis:
- Beim Absenden des Formulars (per "Submit"-Button) werden die Einstellungen in einem nichtflüchtigen Speicher gesichert.
Einige Einstellungen werden allerdings erst beim nächsten Neustart aktiv.
Falls kein manueller Neustart durch Aus- und Wiedereinschalten des Gerätes möglich ist,
füllen Sie daher erst das Formular aus (Passwort nicht vergessen!),
klicken danach auf "Submit", und zum Abschluss auf "Reboot" (d.h. System-Neustart).
Ohne gültiges Passwort ist kein Neustart per HTTP-Server möglich.
Das programierbare Gerät (UPT, MKT-View II / III) unterstützt DHCP (Dynamic Host Configuration Protocol) als Client.
DHCP kann (und sollte !) immer dann verwendet werden, wenn im lokalen Netzwerk ein DHCP-Server verfügbar ist.
Durch DHCP kann viel Arbeit und Ärger mit IP-Adress-Kollisionen vermieden werden, denn der DHCP-Server weist jedem
DHCP-Slave automatisch eine (bis dato) noch freie IP-Adresse zu. Dadurch werden Adresskonflikte vermieden,
und die aufwändige manuelle Vergabe (und "Pflege") von 'statischen IP-Adressen', 'Subnetzmasken', und der Konfiguration
des 'Standard Gateways' in jedem einzelnen Gerät entfällt.
Es gibt allerding auch Nachteile von DHCP: Es muss ein entsprechender Server zur Verfügung stehen (in vielen Fällen
fungiert der Router auch als DHCP-Server; Windows (-XP) allein ist dazu nicht in der Lage);
und die dynamisch vergebene IP-Adresse könnte sich bei jedem Neustart ändern.
Aus dem Grund wird (beim Einsatz von DHCP) ein Gerät im Netzwerk nicht über seine (numerische) IP-Adresse,
sondern über den sogenannten Host-Namen (hier: gleichbedeutend mit dem Gerätenamen) angesprochen.
Der Hostname muss im Netzwerk eindeutig sein, d.h. ein bestimmter Hostname darf nur ein einziges Mal vorkommen.
Immerhin ist es wesentlich einfacher, einen eindeutigen Hostnamen festzulegen, als eine einzigartige IP-Adresse
zu ermitteln (die wirklich 'niemand sonst' im LAN verwendet).
Der per Default (bei der Auslieferung) eingestellte Hostname von allen UPTs ('User Programmable Terminals')
von MKT Systemtechnik -wozu auch die 'MKT-Views' gehören- lautet UPT.
Dieser Name kann, wie bereits erwähnt, per Browser oder im System-Menü unter 'Network Setup' geändert werden.
Der in den UPTs verwendete Internet Protocol Stack verwendet eine
Untermenge des NetBIOS-Protokolls
um einen Hostnamen in eine IP-Adresse aufzulösen. Aufgrund der begrenzten EEPROM-Größe sind Hostnamen hier
auf maximal 7 Buchstaben beschränkt. Kleinbuchstaben und Sonderzeichen sollten vermieden werden.
- Tipp für Anwender ohne 'echte Hardware':
- Das UPT-Programmiertool kann den im 'echten' Gerät vorhandenen Web-Server notfalls emulieren.
Um den Web-Server des Emulators anzusprechen, geben Sie im Browser statt des Hostnamens
die 'Loopback'-IP-Adresse 127.0.0.1 ein, um eine 'lokale' Verbindung
mit dem im Programmiertool laufenden Web-Server aufbauen.
So kann die Funktion des HTTP-Servers auch ohne 'echte Hardware' getestet werden.
CAN-via-UDP (und, als 'Plan für die Zukunft', FlexRay-via-UDP) verwendet das User Datagram Protocol
um CAN-Telegramme (oder FlexRay-Frames) über Ethernet/LAN zu 'tunneln'.
Details zum verwendeten Protokoll und zur Konfiguration stehen im Dokument
Nr. 85140, "CAN via UDP" von MKT Systemtechnik.
Bei einer "Verbindung" per CAN-via-UDP muss einer der beiden Endpunkte als Server, und der andere Endpunkt als Client konfiguriert sein.
Üblicherweise arbeitet ein externes CAN-via-UDP- (oder FlexRay-via-UDP-) Gateway als Server (d.h. wartet auf Kommandos an 'seinem' UDP-Port),
während das Display als Client die Dienste des abgesetzten Servers in Anspruch nimmt (d.h. der Client versucht, eine
Verbindung mit dem Server aufzubauen, damit der Server "im Auftrag des Clients" CAN-Telegramme sendet und empfängt).
Die Default-Port-Nummer für CAN-via-UDP ist, wie in Dokument Nr. 85140 vorgeschlagen, i.A. 55556.
Die Default-Port-Nummer für FlexRay-via-UDP war zum Zeitpunkt der Erstellung dieses Dokumentes (2013-08-07) unbekannt.
Diese Funktion steht nur bei manchen Geräten mit einer Sonder-Firmware (z.B. für MKT-View IV) zur Verfügung !
Der 'Packet Capture Buffer' speichert die letzten 256 (?) kByte an Daten, die das Gerät in das Netzwerk
(z.B. Ethernet oder CAN) gesendet bzw aus dem Netzwerk empfangen hat.
Der Puffer ist intern als FIFO (first in, first out) angelegt, und verwendet das mit dem Programm 'Wireshark'
kompatible PCAPNG-Dateiformat. Der Pufferinhalt kann per Web-Server angezeigt oder als Datei (auf dem eigenen PC)
gespeichert werden. Zusätzlich stehen per Web-Interface Funktionen zum Starten, Stoppen und Löschen des Puffers
zur Verfügung. Dazu dienen die im Folgenden aufgeführten 'Adressen' (denen, wie üblich, der Name oder die IP-Adresse
des Web-Servers vorangestellt werden muss) :
- capture.htm
- zeigt einen Teil des Capture-Puffers direkt als HTML an.
Das Format entspricht, soweit möglich, der Anzeige in Wireshark (siehe Screenshot am Ende dieses Kapitels).
- capture.txt
- liest den Puffer in einem einfachen, 'lesbaren' Textformat.
Im Gegensatz zu HTML werden diverse Protokolle nicht farbig markiert.
- capture.pcapng
- liest den Puffer im Wireshark-kompatiblen 'PCAPNG'-Format aus.
Nach dem Dateinamen und der Dateinamenserweiterung, getrennt per Space, können die folgenden Befehle
zum Steuern der Paket-Aufzeichung gesendet werden (zusätzlich zu den Einstellungen im System-Setup, s.U.):
- /start
- Startet das Aufzeichnen von Ethernet oder/und CAN-Telegrammen im Capture-Buffer.
- /stop
- Beendet das 'Einsammeln' weiterer Frames bzw Telegramme, und verhindert so, dass die ältesten Einträge im FIFO überschrieben werden.
- /clear
- Löscht den Inhalt des FIFOs (Capture-Puffer im RAM).
- /time=rel
- Umschalten auf Timestamp-Anzeigeformat "Relativ; Sekunden seit dem vorhergehenden Paket".
In der HTML-Ansicht erhält die Spalte mit den Zeitmarken danach die Überschrift "DeltaT", d.h. Zeitdifferenz.
- /time=sec
- Umschalten auf Timestamp-Anzeigeformat "Sekunden seit dem Start des Captures".
In der HTML-Ansicht erhält die Spalte mit den Zeitmarken danach die Überschrift "Time", d.h. Zeit.
Abhängig von den Einstellungen im Setup ("Main System Menu" .. "Diagnostics" .. "Ethernet Capture")
können im 'Packet Capture'-Puffer sowohl empfangene als auch gesendete Ethernet-Frames,
aber auch CAN-Telegramme stehen.
Diese Funktion diente im Sommer 2015 als Hilfe bei der Entwicklung Ethernet-basierender Diagnose- und Anzeigeprotokollen,
u.A. auch 'OpenABK'.
Browser-Screenshot mit 'Ethernet Packet Capture'.
Zum Vergrößern in das Bild klicken.
|
'Echter' Wireshark-Screenshot aus der gleichen Aufzeichnung.
Zum Vergrößern in das Bild klicken.
|
Sollten Sie Bedenken wegen des Datenschutzes / Netzwerksicherheit haben:
Die Packet-Capture-Funktion ist per Default dauerhaft passiv - sie muss vor der Verwendung
im System-Setup des Gerätes ("lokal") aktiviert werden.
Auch die oben aufgeführten Befehle (z.B. "/start" per Browser) funktionieren nur,
wenn im System-Setup (EEPROM) ein entsprechendes Flag gesetzt ist.
Ferner ist ein Log-In (z.B. auf der Seite 'Device Setup') erforderlich,
um das 'Packet Capture' per Web-Browser zu steuern, und um den Puffer per HTTP als PCAPNG-Datei auszulesen.
Ohne Log-In ist es weder möglich die Capture-Funktion per Browser mit Start / Stop / Clear zu steuern, noch den Capture-Puffer
als PCAPNG-Datei auszulesen. Ohne Log-In ist lediglich die Anzeige 'als Text' (*.txt oder *.htm) im Browser möglich.
Die bei der direkten Anzeige im Browser 'erkannten' Protokolle (z.B. ARP, DHCP, TCP, UDP) stellen nur eine
winzige Untermenge des Funktionsumfangs von Wireshark dar. Es empfiehlt sich daher, für detailierte Analysen
den Capture-Puffer im PCAPNG-Format auszulesen, und (wie im rechten Screenshot) direkt in Wireshark zu öffnen.
Anwenderfreundliche Browser lassen sich so konfigurieren, dass sie beim Öffnen einer URL mit der Endung '.pcapng' direkt Wireshark starten,
der dann wiederum direkt die vom Browser heruntergeladene Datei (capture.pcapng) öffnet.
Die meisten Protokollfehler und -Warnungen (wie z.B. die 'TCP Retransmission' in Paket Nr. 31 in den obigen Screenshots)
werden nur von Wireshark erkannt. Ähnliches gilt für zahlreiche Protokolle und Frame-Typen,
die von der im MKT-Gerät integrierten Anzeige nur als ARP, UDP oder TCP erkannt werden,
von Wireshark aber auch als LLMR, BROWSER, DHCPv6, NBNS, HIP, HTTP, VNC, FTP, etc...
Bei der Anzeige von CAN-Frames per Web-Browser wird die Übertragungsrichtung durch die
Hintergrundfarbe markiert:
Blau : Aus Sicht des Gerätes empfangene CAN-Telegramme,
Grün : Vom Gerät in das Netzwerk gesendete CAN-Telegramme.
Im Gegensatz zu Wireshark wird der CAN-Message-Identifier hier nicht im 'Info'-Feld,
sondern in der Spalte 'Source' (= Quelle bei empfangenen Frames, blau)
oder in der Spalte 'Destination' (= Ziel bei gesendeten Frames, grün) angezeigt.
11-Bit-Identifier werden hexadeximal mit 3 Ziffern angezeigt, 29-Bit-Identifier mit 8 Ziffern.
Im 'Info'-Feld wird nur das CAN-Datenfeld angezeigt (maximal 8 Bytes, hexadezimal ohne Prefix).
Beispiel:
Packet Capture Status : Running, captured 5 packets .
No. Time Source Destination Prot Length Info
1 0.00000 CAN1:0x07B CAN 8 00 02 03 04 05 06 07 08 |
2 0.13405 CAN1:0x000003FF CAN 8 05 44 4C 34 59 48 46 20 |
3 0.43712 CAN1:0x07B CAN 8 01 02 03 04 05 06 07 08 |
4 0.53385 CAN1:0x000003FF CAN 8 05 44 4C 34 59 48 46 20 |
5 3.12532 192.168.0.206 192.168.0.234 TCP 117 TX "HTTP/1.0 200 OK\r\nContent-Type:"... |
Siehe auch: Wireshark-Tricks
im Hilfesystem des UPT-Programmiertools (online).
Ein geeigneter Web-Browser (z.B. Firefox, Chrome oder Iron) kann per HTTP (Hypertext Transfer Protocol)
auf verschiedene Speicherbereiche des Gerätes zugreifen.
Bei manchen Geräten (z.B. MKT-View II,III) kann der Browser auch auf ein
'echtes' Dateisystem (nämlich auf das FAT-Dateisystem auf der SD-Karte) zugreifen.
Da der HTTP-Server bislang nur HTTP (-'GET'), aber nicht FTP (=File Transfer Protocol) unterstützt,
können Dateien bislang nur (aus Sicht des Browsers) gelesen aber nicht geschrieben oder gelöscht werden.
Details zum Pseudo-Datei-System finden Sie im
Online-Hilfesystem
des Programmiertools (verfügbar auf der MKT-Webseite).
Das Root-Verzeichnis ("Wurzelverzeichnis") des (Pseudo-)Dateisystems kann per Web-Browser
über die Adresse <IP-Addresse>/files/ oder (alternativ) <Hostname>/files/
ausgelesen werden.
Bei Geräten mit Speicherkarten-Adapter sind einige Einträge (z.B. das Gerät 'memory_card', s.U.)
nicht nur 'Pseudo-', sondern echte Dateisysteme.
Andere Einträge (z.B. data_flash, audio_flash, font_flash, etc) sind keine 'echten' Dateisysteme,
sondern repräsentieren verschiedene Flash-Bausteine bzw. verschiedene Adressbereiche
innerhalb dieser Bausteine, die für die Übertragung "wie eine Datei" angesprochen werden können.
Dieser Bereich im Flash-Speicher dient zum Speichern der Applikation.
Die einzelnen Elemente (im Flash) sind nicht zum Auslesen als Datei ansprechbar.
Dieser Bereich im Flash-Speicher wird für Audio-Dateien verwendet, die z.B. als akustische Warnung
per Befehl in der Applikation abgespielt werden können.
Dient als Speicher für benutzerdefinierte Zeichensätze und den 'Boot-Screen' (BOOTSCRN.BMP).
Werden in einer Applikation 'eigene' (benutzerdefinierte) Zeichensätze verwendet,
dann werden diese i.A. automatisch vom Programmiertool per CAN in das Gerät übertragen.
Diese Funktion ist nur bei Geräten mit SD-Memory-Adapter vorhanden, z.B. MKT-View II/III.
Per Web-Browser können die auf der Speicherkarte abgelegten Dateien als Directory aufgelistet und ggf. ausgelesen,
aber nicht gelöscht werden.
Die RAMDISK dient u.A. als Zwischenspeicher beim 'Hochladen' von Dateien (d.h. per Web-Browser
gesteuerte Übertragung vom PC in das Zielsystem). Details dazu im folgenden Kapitel.
Darüberhinaus kann z.B. die Script-Sprache
Dateien in der RAMDISK anlegen, die dann per Web-Browser lesbar sind.
Bestimmte Dateitypen können vom PC per Web-Browser (und HTTP) in das programmierbare Terminal hochgeladen werden.
Sofern das Gerät noch den Default-Hostnamen verwendet ("UPT"), kann die 'Upload'-Seite
im Browser unter der Adresse upt/upload.htm aufgerufen werden.
Klicken Sie zunächst auf den Button mit dem Text "Durchsuchen.." (bzw. auf einem PC mit englischer Oberfläche auf "Browse";
der Text dieses Buttons wird leider vom Browser diktiert; ebenso die Reihenfolge der Buttons neben dem Eingabefeld).
Abhängig vom Betriebssystem wird daraufhin eine Datei-Auswahl-Box angezeigt. Wählen Sie die hochzuladende Datei.
(Abbildung der Seite 'Upload Files' auf einem 'deutschen' PC mit Firefox unter Windows XP)
Bei einigen Browsern muss im Auswahldialog (i.A. mit dem Titel 'Öffnen') der 'Dateityp' zunächst auf
'alle Dateien' umgeschaltet werden, weil die Dateiauswahlliste sonst bis auf wenige, "dem Browser bekannten"
Dateitypen leer bleibt (z.B. wurden zwar *.pdf und *.bmp - Dateien angezeigt, aber nicht *.cvt).
Der komplette Zugriffspfad und Dateiname wird danach im Textfeld neben dem 'Durchsuchen'-Button angezeigt.
Wenn Sie sicher sind, die hochzuladende Datei korrekt ausgewählt zu haben, klicken Sie danach auf den Button zum "Absenden".
Auch hier wird der Text des Buttons vom Browser, Betriebssystem, und der gewählten Sprache diktiert.
Übliche Beschriftungen sind "Send", "Daten absenden", oder Ähnliches.
Das eigentliche 'Hochladen' (d.h. vom Client initiiertes Senden der Datei) kann je nach Dateigröße einige Sekunden dauern.
Danach schaltet der Browser auf eine neue Seite um, auf der Sie (!) entscheiden können, was mit der hochgeladenen Datei passieren soll.
Nachdem eine oder mehrere Dateien in die RAMDISK des Zielsystems hochgeladen wurden, überprüft das Zielsystem zunächst den Dateityp
(und, bei bestimmten Dateitypen, die Integrität der Datei).
Handelt sich um einen 'speziellen' Dateityp, führt die Firmware beim Klick auf den 'Process'-Button ("Verarbeiten!")
eine der weiter unten aufgeführten Aktionen aus. Dafür muss sich -bis auf wenige Ausnahmen- der Anwender vorher mit einem Passwort
einloggen (Passwort im Feld 'Enter Password' eingeben, danach ENTER-Taste drücken oder auf 'Login' klicken).
(Abbildung der Seite 'Files Transferred', d.h. 'Dateien wurden übertragen', auf einem deutschen PC)
Nach dem Anklicken des 'Process'-Buttons (siehe Screenshot) kann es einige Sekunden dauern, bis die Firmware die entsprechende
Aktion durchgeführt hat, und eine entsprechende Statusmeldung im Browser angezeigt wird. Die hochgeladenen Dateien werden
währenddessen wie folgt verarbeitet:
- *.upt; *.cvt : Display-Applikationen werden vom Text- ins Binärformat umgewandelt, und im FLASH-Speicher abgelegt.
Im Erfolgsfall werden diese Dateien danach automatisch aus der RAMDISK gelöscht.
- *.bi2 : Firmware-Updates verbleiben in der RAMDISK, bis das System im "Bootloader-Modus" neu gestartet wird.
Beim 'Verarbeiten' ('Process') einer Firmware-Datei fragt der Bootloader den Bediener nach einer
Bestätigung, ob der Firmware-Update wirklich durchgeführt werden soll.
Auch aus Sicherheitsgründen ist dies bei Geräten mit Tastatur, Touchscreen, oder Dreh/Drück-Bedienknopf
nur lokal, d.h. "am Gerät" möglich.
New firmware info:
Art-Nr. : 11532 (je nach Gerätetyp)
Version : X.Y.Z
Compiled: Monat, Tag, Jahr der Kompilierung.
FW: MKT-View IV / 7" LPC4357 / CANdb
-----------------------------------
| Is this the firmware you wanted ? |
| Press ENTER/OK/F1 to CONFIRM, |
| or any other key to abort. |
----------------------------------- |
Nach der Bestätigung wird die neue Firmware 'geflasht', d.h. aus der RAMDISK in den Flash-Speicher übertragen.
Danach muss erneut die ENTER-Taste gedrückt werden, um das Gerät mit der neuen Firmware neu zu starten.
Siehe auch: Firmware-Update per Speicherkarte.
- *.fnt : Benutzerdefinierte Zeichensätze werden in den dafür reservierten Teil des FLASH-Speichers kopiert.
Im Erfolgsfall werden diese Dateien danach automatisch aus der RAMDISK gelöscht.
- *.wav : Wave-Audio-Dateien werden, sofern vorhanden, im 'Audio-FLASH' dauerhaft gespeichert.
Steht kein derartiges Medium zur Verfügung, werden Audio-Dateien im gleichen FLASH-Speicher wie die
benutzerdefinierten Zeichensätze abgelegt. Im Erfolgsfall werden diese Dateien danach automatisch aus der RAMDISK gelöscht.
- Andere 'spezielle' Dateien werden möglicherweise auf eine andere Weise weiterverarbeitet,
was zum Zeitpunkt dieser Beschreibung (2012-11-12) noch nicht absehbar war.
(Abbildung der Seite mit dem 'Status Report', nach der Verarbeitung der hochgeladenen Dateien)
Ohne spezielle Verarbeitung verbleiben die hochgeladenen Dateien in der RAMDISK, es sei denn, ein
Script
im Anzeigeprogramm 'kümmert' sich um die Datei in irgendeiner Form (Lesen, Anzeigen, als Audiodatei abspielen, Löschen, ...).
Zum einfachen Hochladen ohne die oben beschriebene Weiterverarbeitung ist kein Login mit Passwort nötig.
Hochgeladene Dateien verbleiben dann bis zum Abschalten in der RAMDISK, wo sie (außer Speicherplatz zu belegen) keinen Schaden anrichten können.
Hochgeladene Dateien können (wie alle Dateien in der RAMDISK) per Web-Browser auch wieder ausgelesen, oder gelöscht werden.
Zum Anzeigen des Inhaltsverzeichnisses der RAMDISK, und Ermitteln des verbleibenden freien Speichers in Kilobyte
rufen Sie die Seite upt/files/ramdisk auf (ggf. "upt" in der Addresse durch den Hostnamen ersetzen).
- Hinweis
- Ein Kilobyte besteht seit den frühen Tagen der 'Computerei' aus 1024 Bytes.
Daran wird sich nichts ändern, selbst wenn mancherorts nun das "kibiByte" propagiert wird,
und manche Festplattenhersteller der Meinung sind, 1000 Bytes wären bereits ein ganzes 'kiloByte' !
Die meisten Webseiten des Servers enthalten "dynamischen Inhalt". Dieser wird in Form bestimmter Schüsselwörter (Tokens)
in den HTML-Dateivorlagen realisiert (nicht mit HTML-Tags zu verwechseln). Der HTTP-Server erkennt diese Schlüsselwörter
beim Auslesen, und ersetzt sie (in der HTTP-Antwort) durch die entsprechenden aktuellen Werte.
Zum Zeitpunkt der Erstellung dieser Dokumentation waren die folgenden Tokens implementiert
(ohne Leerzeichen zwischen '$' und dem aus drei Buchstaben bestehenden Token):
-
"$ AIV $" = Analoger Eingang zum Messen Versorgungsspannung
(liefert 3 Ziffern, 0.0 ... 36.9 Volt)
-
"$ AIv $" = Analoger Eingang zum Messen Versorgungsspannung
(liefert 3 Ziffern, Einheit in PROZENT DER NOMINALEN SPANNUNGSVERSORGUNG, i.A. 000%=0V, 100%=24 V)
-
"$ AIU $" = Analoger Eingang zum Messen der 'Ultracap'-Spannung (für Geräte mit interner USV)
(3 digits, 0.00 ... 5.19 Volt)
-
"$ AIT $" = Analoger Eingang zum Messen der Temperatur im Inneren des Gerätes
(3 Digits, Grad Celsius mit einer Nachkommastelle, 0.0 ... 49.9 °C)
-
"$ AIt $" = Analoger Eingang zum Messen der Temperatur im Inneren des Gerätes
(3 Digits, 0 = 0°C ... 100 = 100°C )
-
"$ FWA $" = Firmware Article (5-ziffrige Artikelnummer der Geräte-Firmware)
"$ FWN $" = Firmware Name (einzeilige Beschreibung der Firmware 'MKT-View II 480*272 TFT')
"$ FWV $" = Firmware Version (oder Datum der Kompilation)
-
"$ RTC $" = Auslesen der Real Time Clock, liefert ISO-formatiertes Datum und Uhrzeit (YYYY-MM-DD hh:mm:ss).
Könnte auch 'RTC not available' zurückgeben, wenn keine RTC (Echtzeituhr) installiert ist, oder diese
von der geladenen Firmware nicht unterstützt wird.
Ist der angezeigte Wert falsch, wechseln Sie ggf. die Batterie, und setzen die korrekte Uhrzeit per Setup.
-
"$ SCH $" = Screen-Height in pixels (Höhe des Displays, gemessen in Pixel, 3 oder 4 Ziffern).
"$ SCW $" = Screen-Width in pixels (Breite des Displays, gemessen in Pixel, 3 oder 4 Ziffern).
Wird z.B. auf manchen HTML-Seiten verwendet, um dem Web-Browser die Größe des Framebuffers mitzuteilen,
bevor die entsprechende Grafik übertragen wird.
-
"$ SNR $" = Serialnummer (üblicherweise 4 oder 5 Ziffern).
-
"$ SIP $" = Server IP. Dies ist die vom HTTP-Server momentan verwendete, "eigene",
lokale IP-Adresse, die in den meisten Fällen per DHCP nur 'ausgeliehen' wird.
Das Ergebnis könnte eine Zeichenkette wie z.B. 192.168.0.242 sein (je nach Netzwerk-Konfiguration).
Da der HTTP-Server keine Ahnung davon hat, welche Adresse er 'auf der anderen Seite'
eines DSL-Routers oder ähnlichem Kommunikationsgeraffels hat, funktioniert die
so ermittelte Adresse immer nur im lokalen Netzwerk; aber nicht im "Internet" (world wide web).
Da der integrierte Web-Server nie als 'großer' Web-Server für das WWW vorgesehen war,
fehlen ihm auch viele der Sicherheitsmechanismen eines 'echten' Webservers wie z.B. Apache !
Diese Funktion diente lediglich dazu, um in den vom Server erzeugten Webseiten
einen Link zum eingebauten Telnet-Server einzubauen, z.B. "telnet://192.168.0.242".
Mit Hilfe der Funktion '$SIP', ist der obige Link in der HTML-Vorlage wie folgt codiert:
<A HREF="telnet://$SIP$">telnet://$SIP$</A>
Viele der oben aufgeführten Tokens werden auf der 'Index'-Seite verwendet.
Dadurch kann der gleiche Quelltext (als HTML-Vorlage) in den verschiedensten Firmware-Varianten
verwendet werden, ohne dass jedesmal manuelle Anpassungen nötig sind.
Neben den oben aufgeführten Schlüsselwörtern (in den HTML-Vorlage-Dateien) erkennt der HTML-Server
bei der Anforderung per HTTP auch einige 'besondere' Dateinamen.
Zum Zeitpunkt der Erstellung dieses Dokumentes waren dies:
-
screen1.bmp = Grafikspeicher (framebuffer) des Gerätes als Bitmap-Datei mit 1 bis 8 Bit pro Pixel.
Fordert ein Web-Browser diese Datei per HTTP an, kopiert der HTTP-Server den Inhalt des Grafikspeichers
(Framebuffers) ins RAM, und erzeugt daraus eine *komprimierte* Bitmap-Datei mit 8 Bit pro Pixel,
die dann in der Antwort auf die HTTP GET - Anforderung zurückgesendet wird.
-
screen16.bmp = Grafikspeicher (framebuffer) des Gerätes Bitmap mit 16 Bit pro Pixel.
Liefert bei Geräten mit 65535-Farb-Displays den Inhalt des Grafikspeichers mit der maximalen Farbauflösung.
Dies geht allerdings (wegen der im Vergleich mit "screen1.bmp" mehr als doppel so großen Datei)
auf Kosten der Übertragungsgeschwindigkeit.
-
_remctrl.htm = Remote control server.
Diese unsichtbare Seite wird nur per
XMLHttpRequest aufgerufen.
Sie dient zur Verarbeitung von Maus-Ereignissen (im Web-Browser des Bedieners) um z.B. einen Touchscreen
für die Fernbedienung zu simulieren. Daten werden dabei im 'Query String' übertragen.
Die folgenden 'keys' (im Query String) werden z.Z. unterstützt:
-
mx= Horizontale Mausposition (Pixel),
Bereich: 0 .. Displaybreite minus Eins
-
my= Vertikale Mausposition (Pixel), Bereich: 0 .. Displaybreite minus Eins
-
mb= mouse button state. 1:Maus-Button gedrückt; 0:nicht gedrückt.
-
kd= key down event. Überträgt Tastencodes vom Browser zum Web-Server. Tasten werden durch ihren
'browser keyboard code' identifiziert.
-
ku= key up event. Wird beim Loslassen(!) einer Taste gesendet. Code wie bei 'kd'.
Mit der 'Menü-Taste' (Code 93 in den meisten Browsern) wird im Terminal das System-Menü aufgerufen.
-
dc=command_string führt ein
Interpreter-Kommando im Display aus.
Die Antwort (im XMLHttpRequest - Objekt) beginnt mit "dc:"; sie enthält eventuelle Fehlercodes
des 'Remote Procedure Calls' als String (Zeichenkette).
-
df=expression Auswerten eines numerischen Ausdrucks,
oder Aufruf einer Interpreter-Funktion.
Die Antwort (im XMLHttpRequest - Objekt) beginnt mit "df:",
gefolgt vom Rückgabewert der Funktion (als Zeichenkette),
oder (wenn der Funktionsaufruf fehlschlug) einem Fehlercode (ebenfalls als String).
Um einen Fehler von einem erfolgreichen Funktionsaufruf zu unterscheiden, folgt nach dem "df:" in der Antwort
ein Leezeichen (vor dem Return-Wert), wenn der Aufruf ERFOLGREICH war (d.h. Space nach dem Doppelpunkt: KEIN FEHLER).
Mehrere Ausdrücke können mit einem einzigen Aufruf berechnet werden; die einzelnen Ausdrücke sind per Komma zu trennen.
Ein Blick auf den Quelltext (Javascript) der 'Fernsteuer-Seite', remctrl.htm
, liefert zahlreiche Beispiele.
Der im Anzeige-Terminal integrierte Web-Server basiert auf einer privaten Entwicklung von Wolfgang Buescher,
die Suche nach 'DL4YHF Spectrum Lab' führt Sie zum Original-Dokument mit allen Details.
Der 'Query String' für '_remctrl.htm' wird normalerweise von einem recht häßlichen Javascript erzeugt,
welches wegen der grauenhaften (und im Jahre 2012 noch immer existenten) Browser-Inkompatibilitäten
komplexer ausfällt, als man(n) erwarten sollte !
- capture.htm, capture.pcapng, capture.txt : Auslesen des optionalen Wireshark-kompatiblen 'Packet Capture'-Buffers.
break;
-.. . -.. .-.. ....- -.-- .... ..-. ...-.-
Momentan enhält dieses Kapitel nur einige "Notizen des Entwicklers", der keine Erfahrungen mit Windows "Vista",
und nur wenig Erfahrung mit "Windows 7" hatte ... denn in der Entwicklung stand (damals) nur ein Window-XP-System zur Verfügung.
Das folgende Kapitel enthält eine kurze Beschreibung, wie eine Punkt-zu-Punkt-Verbindung per Ethernet-Kabel
zwischen einem PC mit Windows 7 und einem programmierbaren Gerät mit fester IP-Adresse (hier: MKT-View III)
hergestellt werden konnte.
Da auf dem privaten Notebook des Autors nur Windows 7 in deutscher Sprache installiert war, ist die folgende
'Kurzanleitung' auch nur in deutscher Sprache verfügbar.
- "Start" in der linken unteren Ecke, "Systemsteuerung".
- "Netzwerk und Freigabecenter"
- "Adaptereinstellungen ändern"
(im Fenster mit dem Titel "Systemsteuerung - Netzwerk und Internet - Netzwerkverbindungen")
- auf das Symbol für die "LAN-Verbindung" (d.h. Ethernet-Schnittstelle) klicken,
über die später die Verbindung zum programmierbaren Gerät aufgebaut werden soll.
(Siehe Screenshot 'Auswahl der LAN-Verbindung' am Ende dieses Kapitels)
- Unter dem Symbol darf, wenn die Kabelverbindung zum Gerät hergestellt ist, KEIN ROTES KREUZ erscheinen !
(das rote Kreuz soll wohl andeuten, dass die Verbindung "physikalisch" nicht funktioniert)
- Doppelklick auf das Symbol "LAN-Verbindung". Es sollte sich ein Fenster mit dem Titel "Status von LAN-Verbindung" öffnen.
(Siehe Screenshot 'Status von LAN-Verbindung' am Ende dieses Kapitels)
- In besagtem Fenster den Button namens "Eigenschaften" anklicken
- In der Liste unter "Netzwerk" den Eintrag "Internetprotokoll Version 4 (TCP/IP)" markieren.
- Klick auf "Eigenschaften" (unter der Liste mit den Netzwerkprotokollen).
Es öffnet sich ein weiteres Fenster:
(Details zur IP-Adresse, Subnetzmaske, und dem Standardgateway folgen später)
- Da bei einer Punkt-zu-Punkt-Verbindung zwischen Windows (7) und dem programmierbaren Gerät
kein DHCP-Server zur Verfügung steht, muss wohl oder übel die Option
(o) Folgende IP-Adresse verwenden:
aktiviert werden, und im darunterliegenden Feld eine noch freie IP-Adresse
eingegeben werden (ähnlich wie im obigen Screenshot).
Im oben gezeigten Screenshot wurde im programmierbaren Gerät die feste IP-Adresse 192.168.0.206
verwendet. Wichtig:
Da in der beschriebenen Konfiguration (Notebook direkt über Ethernet-Kabel mit dem Gerät verbunden) kein DHCP-Server
zur Verfügung stand, darf auch im programmierbaren Gerät kein DHCP verwendet werden !
Die ersten drei Bytes in den IP-Adressen (hier: 192.168.0) müssen bei allen Geräten im Netzwerk identisch sein.
Üblicherweise ist die Subnetzmaske für diese drei Bytes immer '255.255.255'; das letzte Byte der Subnetzmaske ist
üblicherweise Null. Eine detailierte Erklärung würde den Rahmen dieses Dokuments sprengen; fragen Sie ggf. Ihren
Netzwerk-Spezialisten !
Zu den obigen Screenshots passende Einstellungen im 'Network Setup' des programmierbaren Gerätes (hier: MKT-View III) :
NETWORK SETUP
MAC: 00-50-C2-8E-70-00
Name: UPT2
DHCP: disabled (static IP)
IPaddr: 192.168.000.206
Subnet: 255.255.255.000
Gatew.: 192.168.000.001
Local TCP Server Ports:
HTTP:80 TN:23 FTP:21
CAN via UDP: off
RemoteIP: 192.168.000.242
Ports: R=55556 L=55557
Zusammenfassung der Screenshots von den Netzwerk-Einstellungen unter Windows 7 (64-Bit, auf dem Notebook des Autors):
(Auswahl der LAN-Verbindung, aka 'Ethernet-Port', unter Windows 7)
("Status von LAN-Verbindung", nach Doppelklick auf den Adapter aus dem vorherigen Screenshot)
("Eigenschaften von LAN-Verbindung", nach Klick auf "Eigenschaften" unter 'Status von LAN-Verbindung' [s.O.] )
("Eigenschaften von Internet Protokoll Version 4 (TCP/IPv4)",
nach Klick auf "Eigenschaften" unter 'Eigenschaften von LAN-Verbindung' [s.O.],
wenn dort der Eintrag 'Internetprotokoll Version 4 (TCP/IPv4)' markiert ist )
("Eigenschaften des Ethernet-Controllers im PC", hier: Realtek PCIe im Notebook des Autors)
Mit den oben gezeigten Einstellungen funktionierte -zumindest auf dem Notebook des Autors, einem HP630-
die Verbindung zum Web-Server des programmierbaren Gerätes unter Windows 7, 64 Bit, "Home Premium", problemlos.
Das programmierbare Gerät (MKT-View III) konnte per Browser (Firefox) sowohl über die IP-Adresse (z.B. 192.168.0.206)
als auch über den Hostnamen des Gerätes (z.B. UPT) angesprochen werden.
Hinweise zur IP-Konfiguration:
- IP-Adresse :
- Fragen Sie ggf. Ihren Netzwerk-Administrator, ob eine feste IP-Adresse im Netzwerk zulässig ist,
und tragen Sie diese IP-Adresse im entsprechenden Eingabefeld ein.
Eine IP-Adresse darf im gesamten (lokalen) Netzwerk nur ein einziges Mal vorkommen,
d.h. die IP-Adresse des PCs kann niemals mit der IP-Adresse des programmierbaren Gerätes identisch sein !
Falls DHCP verwendet wird (d.h. keine festen, sondern dynamisch zugewiesene IP-Adressen),
ist die Eingabe in diesem Feld belanglos, und das Gerät sollte statt über seine IP-Adresse über seinen Host-Namen
angesprochen werden.
- Subnetzmaske :
- Hier wird fast immer der Wert 255.255.255.0 eingestellt.
Falls DHCP verwendet wird (d.h. keine festen, sondern dynamisch zugewiesene IP-Adressen),
ist die Eingabe in diesem Feld belanglos.
- Standardgateway :
- Wird nur benötigt, wenn das Gerät eine Verbindung außerhalb des lokalen Netzwerks aufbauen muss;
z.B. wenn das Gerät (oder der PC) aus irgendwelchen Gründen eine Verbindung mit dem Internet aufbauen muss.
Falls DHCP verwendet wird (d.h. keine festen, sondern dynamisch zugewiesene IP-Adressen),
ist die Eingabe in diesem Feld belanglos.
http://UPT ( = default hostname
der meisten programmierbaren Geräte (ohne CoDeSys), wozu auch die MKT-Views (II, III) zählen.
Diese Adresse (URL) funktioniert nur innerhalb eines Ethernet
LANs, und solange der Hostname noch nicht geändert wurde ! )
Netzwerk-Einstellungen im Systemmenü des programmierbaren Terminals,
in Dokument Nr. 85115, "Network Setup"
Liste mit weiteren 'druckbaren Handbüchern' von MKT Systemtechnik / "MKT-CD"
Webseite von MKT Systemtechnik