Seite 1 von 1

TCP verbindung mit Python Sockes

Verfasst: Donnerstag 17. Dezember 2020, 13:40
von Franz
Hallo

Ich verwend ProfiLab zur Fahrzeugsimulation Can Simulation.
Für die PC interne Simulation Sendet ProfiLab über den denn TCP Modbus Client die Can Daten an ein Python Skript wo die Daten weiter verarbeitet werden.
Leider funktioniert der Client seit dem Letzten update nicht mehr.
Das Skript empfängt die erste Nachricht aber keine Andere.

Ich vermute das meine Antwort der das Skript sendet nicht korrekt.

Meine Client Einstellung:
Der Dateianhang Client_einstellung.PNG existiert nicht mehr.
Und mein Skript:
can_test.pdf
Die Antwort wird in Zeile 354 gesendet.

Welche Antwort wird erwartet?

Danke im Voraus
Franz

Re: TCP verbindung mit Python Sockes

Verfasst: Donnerstag 17. Dezember 2020, 16:02
von abacom
Es könnte vielleicht am local host (127.0.0.1) liegen, unter WIN10.

https://www.google.de/search?q=local+host+win10

Re: TCP verbindung mit Python Sockes

Verfasst: Donnerstag 17. Dezember 2020, 16:05
von Franz
Hallo

Bis zum update ging es auch mit einer alten kompilierten version geht es.
Hab hier noch eine vereinfachtes Skript gemacht:

import socket
#print (DatenpunkList)

HOST = 'localhost' # nur localhost
PORT = 502 # local port für Sockes
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print ('Socket created')
try:
s.bind((HOST, PORT))#Sockes öffnen
except socket.error as msg:
s.close()
print ('Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1])
sys.exit()
print ('Socket bind complete')
s.listen(10)
print ('Socket now listening')
nachricht = bytearray(b'\x9a\x00\x00\x00\x00\x06\x01\x06\x00\x00\x00\x00\x00\x01')
can__receive_dic = {}
while True:
#warten auf neue Daten
conn, addr = s.accept()
Data = bytearray(conn.recv(1024))

#print (Data)
if len(Data) == 37:
can_ID = Data[14]
can_ID = can_ID << 8
can_ID = can_ID | Data[16]
can_ID = can_ID << 8
can_ID = can_ID | Data[18]
can_ID = can_ID << 8
can_ID = can_ID | Data[20]
print (str(hex(can_ID)) + ":" + str(hex(Data[22])) + " " + str(hex(Data[24])) + " " + str(hex(Data[26])) + " " + str(hex(Data[28])) + " " + str(hex(Data[30])) + " " + str(hex(Data[32])) + " " + str(hex(Data[34])) + " " + str(hex(Data[36])) )




conn.send(nachricht)


LG
Franz

Re: TCP verbindung mit Python Sockes

Verfasst: Montag 21. Dezember 2020, 10:22
von abacom
Haben Sie "len(Data) == 37" einmal überprüft?

Re: TCP verbindung mit Python Sockes

Verfasst: Montag 21. Dezember 2020, 14:06
von Franz
Hallo

ich habe zum Testen diesen Print Befel eingefügt "print (Data)".

Die erste Nachricht wird gesendet aber der rest nicht mehr.
Habe vorübergehend eine dll gemacht damit funktioniert es wider.

Danke im Voraus