ich möchte mit Hilfe einer TCP/IP Verbindung Daten von einer SPS (Speicherprogrammierbare Steuerung) zum PC schicken. Die Daten werden von der SPS zyklisch geschickt und dann mit Hilfe des unten stehenden Codes auf dem PC gespeichert. Es handelt sich dabei um etwas abgeänderte Variante des TCP Servers aus der Dokumentation. Die SPS sendet einen String "Hallo" an den PC. Die ankommende Nachricht hat folgende Gestalt "þ" und ist somit nicht lesbar.
Falls jemand die Ursache dafür kennt, wäre ich für Eure Hilfe sehr dankbar.
Code: Alles auswählen
#! /usr/bin/env python
# -*- encoding: latin1 -*-
# Dieser TCP-Server sendet alle Daten, die er empfängt an den
# Client als Antwort zurück
from socket import *
# Der standard Echo Port ist nicht sehr nützlich, da er root
# Rechte erfordert. Wir nehemen den Port 50007
ECHO_PORT = 2000
BUFSIZE = 1024
def main():
# TCP-Socket erstellen und an Port binden
s = socket(AF_INET, SOCK_STREAM)
f = file('C:\\gedicht.txt', 'a')
print "Socket initiert"
x = gethostname()
print x
y = gethostbyname(x)
print y
s.bind(('', ECHO_PORT))
s.listen(1)
print "Server gestartet"
# Warte auf eine Verbindung zum Server
conn, (remotehost, remoteport) = s.accept()
print 'Verbunden mit %s:%s' % (remotehost, remoteport)
while 1:
# Empfange daten vom Client
data = conn.recv(BUFSIZE)
print "Echo:" + data
f.write(data)
f.write('\n')
if not data:
# Die Verbindung wurde getrennt
# Abbruch
break
# Sende die Daten zurück zum client
#conn.send(data)
# Socket schließen
s.close()
f.close()
print('Verbindung beendet')
if __name__ == '__main__':
main()