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 »

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) 6840 mal betrachtet
abacom
Site Admin
Beiträge: 4099
Registriert: Dienstag 23. September 2008, 10:54
Kontaktdaten:

Re: TCP verbindung mit Python Sockes

Beitrag 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
ABACOM support
Franz
Beiträge: 3
Registriert: Donnerstag 17. Dezember 2020, 10:21

Re: TCP verbindung mit Python Sockes

Beitrag 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
abacom
Site Admin
Beiträge: 4099
Registriert: Dienstag 23. September 2008, 10:54
Kontaktdaten:

Re: TCP verbindung mit Python Sockes

Beitrag von abacom »

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 »

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“