TOP
SSV Software Systems Registrieren  Registrieren
Einloggen, um private Nachrichten zu lesen  Einloggen, um private Nachrichten zu lesen
Startseite FAQ Suchen Mitglieder Profil  Login 
SSV Support-Forum
HTTP-Server in Python …

 
Neues Thema eröffnen   Neue Antwort erstellen    SSV-Forum Foren-Übersicht >>> eSOM/3517
<<< Vorheriges Thema - Nächstes Thema >>>  
Beiträge der letzten Zeit anzeigen:   
Autor Nachricht
kdw



Anmeldedatum: 05.05.2006
Beiträge: 1365

BeitragVerfasst am: 09.08.2014, 07:09    Titel: HTTP-Server in Python … Antworten mit Zitat

Hallo Forum.

Mit der eSOM/3517-Python-Portierung lässt sich auch recht einfach ein HTTP-Server realisieren. Hierzu ein Beispiel:

Speichern Sie die folgenden Zeilen Python-Code auf dem PC in einer Datei mit dem Namen igw935-svr-sim.py.

Code:
import time
from BaseHTTPServer import BaseHTTPRequestHandler

Temision = 550.87
Tengine = 77.24
pres = 2.84
speed = 1500
gas = 334
Tfor = 69.09
Tback = 44.90
Tgen = 65.10
power = 63.50
Epower = 452383
CO2 = 56432
Tpower = 234755

class MyHandler(BaseHTTPRequestHandler):
    def do_GET(s):
        s.send_response(200)
        s.send_header('Content-type', 'application/json')
        s.end_headers()
        s.wfile.write('{')
        s.wfile.write('"Temison"' + ':' + str(Temision) + ',')
        s.wfile.write('"Tengine"' + ':' + str(Tengine) + ',')
        s.wfile.write('"pres"' + ':' + str(pres) + ',')
        s.wfile.write('"speed"' + ':' + str(speed) + ',')
        s.wfile.write('"gas"' + ':' + str(gas) + ',')
        s.wfile.write('"Tfor"' + ':' + str(Tfor) + ',')
        s.wfile.write('"Tback"' + ':' + str(Tback) + ',')
        s.wfile.write('"Tgen"' + ':' + str(Tgen) + ',')
        s.wfile.write('"power"' + ':' + str(power) + ',')
        s.wfile.write('"Epower"' + ':' + str(Epower) + ',')
        s.wfile.write('"CO2"' + ':' + str(CO2) + ',')
        s.wfile.write('"Tpower"' + ':' + str(Tpower))
        s.wfile.write('}')

if __name__ == '__main__':
    from BaseHTTPServer import HTTPServer
    server = HTTPServer(('', 8080), MyHandler)
    print 'Starting server, use <Ctrl-C> to stop'
    server.serve_forever()

Übertragen Sie diese Datei per FTP vom PC zum eSOM/3517 in das Verzeichnis /flash. Starten Sie dann dieses Python-Skript im Rahmen einer Telnet- bzw. SSH-Sitzung einfach durch die Eingabe:

Code:
cd /flash
python igw935-svr-sim.py


Das ist schon alles. Sie können nun mit einem Browser oder einem anderen HTTP-Client auf den Server zugreifen. Beachten Sie bitte, dass der Server unter dem Port 8080 erreichbar ist.

Der HTTP-Server liefert für jeden GET-Request (die URI spielt keine Rolle) ein JSON-Objekt der Form:

Code:
{"Temison":550.87,
 "Tengine":77.24,
 "pres":2.84,
 "speed":1500,
 "gas":334,
 "Tfor":69.09,
 "Tback":44.9,
 "Tgen":65.1,
 "power":63.5,
 "Epower":452383,
 "CO2":56432,
 "Tpower":234755}


Die Datenelemente dieses JSON-Objekts entsprechen der auf einem IGW/935 vorinstallierten Demo-Anwendung für die FDE (Field Data Engine).

Gruß KDW
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
kdw



Anmeldedatum: 05.05.2006
Beiträge: 1365

BeitragVerfasst am: 14.09.2014, 08:36    Titel: Server-Template … Antworten mit Zitat

Hallo Forum.

Das folgende Beispiel zeigt einen kleinen HTTP-Server, der per GET /?Tengine=Wert angesprochen werden muss. Der Query-String wird extrahiert und ‚Wert‘ an eine externe Funktion übergeben:

Code:
import urlparse
from BaseHTTPServer import BaseHTTPRequestHandler

def TengineHandler(value):
    print 'Tengine is now ' + value

class MyHandler(BaseHTTPRequestHandler):
    def do_GET(s):
        parsed_path = urlparse.urlparse(s.path)
        querystr = parsed_path.query.split('=')
        if querystr[0] == 'Tengine' and len(querystr) == 2:
            s.send_response(200)
            TengineHandler(querystr[1])
        else:
            s.send_response(400)
        s.end_headers()

if __name__ == '__main__':
    from BaseHTTPServer import HTTPServer
    server = HTTPServer(('', 8080), MyHandler)
    print 'Starting server, use <Ctrl-C> to stop'
    server.serve_forever()

Für den Test dieses Server sollte man cURL benutzen. Ein möglicher Aufruf wäre:

Code:
curl –v http://127.0.0.1:8080/?Tengine=1234


Weitere hilfreiche Informationen zum Python-BaseHTTPServer findet man auch unter: http://pymotw.com/2/BaseHTTPServer/

Gruß KDW
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    SSV-Forum Foren-Übersicht >>> eSOM/3517 Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Sie können keine Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum nicht antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht teilnehmen.

SSV Software Systems GmbH

Dünenweg 5
30419 Hannover

Fon: +49(0)511 / 40 000-0
Fax: +49(0)511 / 40 000-40

sales@ssv-embedded.de


Impressum    ·    Datenschutz    ·    AGB

© 2021 SSV Software Systems GmbH. Alle Rechte vorbehalten.

ISO 9001:2015