TCP verbindung mit Python Sockes

Antworten
Franz
Beiträge: 3
Registriert: Donnerstag 17. Dezember 2020, 10:21

TCP verbindung mit Python Sockes

Beitrag von Franz » Donnerstag 17. Dezember 2020, 13:40

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
Dateianhänge
Client_einstellung.PNG
Client_einstellung.PNG (33.39 KiB) 2037 mal betrachtet

abacom
Site Admin
Beiträge: 3917
Registriert: Dienstag 23. September 2008, 10:54
Kontaktdaten:

Re: TCP verbindung mit Python Sockes

Beitrag von abacom » Donnerstag 17. Dezember 2020, 16:02

Es könnte vielleicht am local host (127.0.0.1) liegen, unter WIN10.

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

Franz
Beiträge: 3
Registriert: Donnerstag 17. Dezember 2020, 10:21

Re: TCP verbindung mit Python Sockes

Beitrag von Franz » Donnerstag 17. Dezember 2020, 16:05

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

abacom
Site Admin
Beiträge: 3917
Registriert: Dienstag 23. September 2008, 10:54
Kontaktdaten:

Re: TCP verbindung mit Python Sockes

Beitrag von abacom » Montag 21. Dezember 2020, 10:22

Haben Sie "len(Data) == 37" einmal überprüft?
ABACOM support

Franz
Beiträge: 3
Registriert: Donnerstag 17. Dezember 2020, 10:21

Re: TCP verbindung mit Python Sockes

Beitrag von Franz » Montag 21. Dezember 2020, 14:06

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

Antworten

Zurück zu „Thema Modbus“