Seite 1 von 1

mit Client auf Server zugreifen und serielle Daten senden

Verfasst: Mittwoch 17. Januar 2007, 21:42
von fritzbee21
Hi,

ich hatte im vergangenen Sommer ein kleines Script mit Python entworfen, das mir auf einem Rechner (win xp) bei Drücken diverser Buchstaben/Zahlen bestimmte Strings auf der (lokalen) seriellen Schnittstelle ausgibt.

Nun würde ich dieses Programm gerne netzwerkfähig machen, d.h. ich starte auf dem lokalen PC einen Server.
Ein Client kann auf diesen Server zugreifen und dort die Strings auf der seriellen Schnittstelle ausgeben.

Ich habe mich die letzten Tage mal in die Netzwerk-Socket-Programierung eingelesen, gibt es denn ein empfehlenswertes Tutorial zu dem Thema ?

ich hatte mir folgende angeschaut:
http://www.amk.ca/python/howto/sockets/
http://www.aifb.uni-karlsruhe.de/Lehre/ ... DE082.html


ich denke mal ich muss die zu sendende Strings schon im Server festlegen, so das der Client nur die entsprechenden vorgefertigen Strings zum senden aufruft (wird warscheinlich die einfachere Methode sein).
Neu zu sendende Strings treten nicht auf, alles was möglich ist, wurde vorher festgelegt.

muss ich denn beim Testen etwas beachten wenn ich Server und Client auf dem gleichen PC (win xp !) starte (ausser localhost als IP Adresse ?)

Re: mit Client auf Server zugreifen und serielle Daten sende

Verfasst: Donnerstag 18. Januar 2007, 09:24
von gerold
fritzbee21 hat geschrieben:Nun würde ich dieses Programm gerne netzwerkfähig machen,
Hi fritzbee21!

Willkommen im Python-Forum!

Vielleicht kannst du damit etwas anfangen:
- http://www.python-forum.de/topic-5478.html
- http://www.python-forum.de/topic-8422.html

mfg
Gerold
:-)

Verfasst: Donnerstag 18. Januar 2007, 15:23
von Sr4l
Wie gibst du Daten auf die Serieleschnittstelle?

Nutzt du da ein Modul wie PySerial oder PyParallel wie es sie bei SF.net gibt?

Verfasst: Donnerstag 18. Januar 2007, 20:57
von fritzbee21
ich nutze dazu PySerial

@Gerold

oups, deine Links sind aber hartes Brot ;-(

Verfasst: Freitag 19. Januar 2007, 09:51
von gerold
fritzbee21 hat geschrieben:oups, deine Links sind aber hartes Brot ;-(
Hi fritzbee21!

Der erste Link aber nicht, oder?

server.py:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Einfacher XMLRPC-Server
"""

from SimpleXMLRPCServer import SimpleXMLRPCServer
from random import randint


class XmlrpcHandler:
    
    def send_text_to_serial(self, text):
        
        ###########
        # Hier könnte der Text weitergeschickt werden...
        print "Empfangen: %s" % text
        ###########
        
        return True

server = SimpleXMLRPCServer(("localhost", 50505))
server.register_instance(XmlrpcHandler())
print "Der XMLRPC-Server horcht auf http://localhost:50505."
print "Er kann mit STRG+C oder STRG+PAUSE beendet werden."
server.serve_forever()
client.py:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Einfacher XMLRPC-Client
"""

import xmlrpclib

server = xmlrpclib.ServerProxy("http://localhost:50505")
retval = server.send_text_to_serial("Hallo Welt")
mfg
Gerold
:-)

Re: mit Client auf Server zugreifen und serielle Daten sende

Verfasst: Freitag 19. Januar 2007, 09:57
von Damaskus
fritzbee21 hat geschrieben: muss ich denn beim Testen etwas beachten wenn ich Server und Client auf dem gleichen PC (win xp !) starte (ausser localhost als IP Adresse ?)
Solange es auf dem gleichen Rechner ist sollte es so wie in Gerolds Script funktionieren.
Sobald aber dein Server script auf einem Server zum Einsatz kommt solltest du

Code: Alles auswählen

server = SimpleXMLRPCServer(("0.0.0.0", 50505))
verwenden.

Gruß
Damaskus

Verfasst: Dienstag 23. Januar 2007, 18:13
von fritzbee21
@Gerold

danke für den Tip ;-)
Ich habe mittlerweile das "Hallo Welt" Script leicht umgebaut.
Muss mal sehen wie ich das beim Server auf die serielle Schnitstelle schiebe, denke aber das wird kein grosser Act (bin grad etwas im Stress, deswegen einfach mal die schnelle Rückmeldung)

@Damaskus
das dachte ich mir, das Localhost nicht im Netzwerk funzt, dachte bei meiner Frage aber eher an windows Eigenheiten.

Aktuell habe ich Server undClient auf nem XP Pc laufen, funzt ;-)