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:
Und mein Skript:
can_test.pdf
Die Antwort wird in Zeile 354 gesendet.
Welche Antwort wird erwartet?
Danke im Voraus
Franz
TCP verbindung mit Python Sockes
TCP verbindung mit Python Sockes
- Dateianhänge
-
- Client_einstellung.PNG (33.39 KiB) 2201 mal betrachtet
Re: TCP verbindung mit Python Sockes
Es könnte vielleicht am local host (127.0.0.1) liegen, unter WIN10.
https://www.google.de/search?q=local+host+win10
https://www.google.de/search?q=local+host+win10
ABACOM support
Re: TCP verbindung mit Python Sockes
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
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
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
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