mit Client auf Server zugreifen und serielle Daten senden

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
fritzbee21
User
Beiträge: 3
Registriert: Mittwoch 17. Januar 2007, 21:28

mit Client auf Server zugreifen und serielle Daten senden

Beitragvon fritzbee21 » Mittwoch 17. Januar 2007, 21:42

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 ?)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: mit Client auf Server zugreifen und serielle Daten sende

Beitragvon gerold » Donnerstag 18. Januar 2007, 09:24

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Beitragvon Sr4l » Donnerstag 18. Januar 2007, 15:23

Wie gibst du Daten auf die Serieleschnittstelle?

Nutzt du da ein Modul wie PySerial oder PyParallel wie es sie bei SF.net gibt?
fritzbee21
User
Beiträge: 3
Registriert: Mittwoch 17. Januar 2007, 21:28

Beitragvon fritzbee21 » Donnerstag 18. Januar 2007, 20:57

ich nutze dazu PySerial

@Gerold

oups, deine Links sind aber hartes Brot ;-(
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Freitag 19. Januar 2007, 09:51

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
Damaskus
Administrator
Beiträge: 890
Registriert: Sonntag 6. März 2005, 20:08
Wohnort: Schwabenländle

Re: mit Client auf Server zugreifen und serielle Daten sende

Beitragvon Damaskus » Freitag 19. Januar 2007, 09:57

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
fritzbee21
User
Beiträge: 3
Registriert: Mittwoch 17. Januar 2007, 21:28

Beitragvon fritzbee21 » Dienstag 23. Januar 2007, 18:13

@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 ;-)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder