Gesendete Daten auswerten ?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Hallo, guten Tag.
Ich möchte bitte gesendete Daten auswerten.
Wie geht das bitte ?

In data kommt vom Clienten der Text : "trottle,0.5", der dann ausgewertet werden soll für unten.

Code: Alles auswählen

while True:
	data =con.recv(BUFFER_SIZE)
	.....
	befehl=...........soll der String "trottle" sein
	wert=.... soll Float 0.5 sein
	
	if not data: break
	
	if (befehl) == 'trottle':	
		vessel.control.throttle = wert
	


Danke.
Gruss
Benutzeravatar
noisefloor
User
Beiträge: 3853
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

Strings kennen eine `split` Methode. Die wäre für dich hier hilfreich.

Gruß, noisefloor
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Danke , es funktioniert schon etwas.
-------------------
a = 'trottle,0.5'
print a.split(",")
--------------------

Es kommt : ['trottle', '0.5']

Wie kann ich jetzt bitte die beiden je einer Variablen zuweisen nach dem es wie oben angekommen ist?
Kannst du mir oben das bitte einmal so schreiben?

Danke.
Gruss
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@funkheld: es sieht so aus, als ob Du auf rohen TCP-Streams arbeitest; so funktioniert das aber nicht. Da kann man nicht einfach `recv` aufrufen und hoffen, dass eine Nachricht ankommt. Du brauchst ein Protokoll. Im einfachsten Fall irgendwas Zeilenbasiertes. Dann nimmt man aber keine Sockets sondern läßt sich ein Fileobjekt mit makefile geben.
Benutzeravatar
noisefloor
User
Beiträge: 3853
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Wie kann ich jetzt bitte die beiden je einer Variablen zuweisen nach dem es wie oben angekommen ist?
@funkheld: du versendest Daten über Sockets und weiß nicht, wie man per Index auf Listen zugreift? Kann eigentlich nicht sein... das sind absolute Grundlagen von Python...

Gruß, noisefloor
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Ich habe dazu keine Listen gebraucht.

Gruss

PS: Du fährst ein Auto und weisst nicht aus welchen Material die Kurbelwelle ist ?
Das sind absolute Grundlagen wenn man ein Auto fährt. :K :K :K
Benutzeravatar
noisefloor
User
Beiträge: 3853
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

@funkheld: der Vergleich ist echter Bullshit... Passender wäre, die fährst Auto, ohne die grundlegenden Verkehrsregeln zu kennen.

Python hat eine handvoll Datentypen, eine davon sind Listen. Das gehört zu den absoluten Grundlagen und wird in _jedem_ Tutorial behandelt. Indexzugriff ist der grundlegenden Weg zum Arbeiten mit Listen, dass kommt noch vor Iteration über Listen.
Wenn du das nicht kannst, dann hast du a) beim Lernen definitiv was verpasst und b) wenn du es nicht lernst, dann kannst du nie nie nie Python effektiv nutzen. Also bitte einmal zurück zum Grundlagentutorial und den Abschnitt über Listen lesen: https://docs.python.org/3.5/tutorial/in ... html#lists
Das brauchst du, weil das kommt immer und immer und immer wieder.

Gruß, noisefloor
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Du hast recht mit deinen Listen.... :D

Ich möchte damit andeuten , das dieses Python zig...mal mehr im Kasten der Sprache hat, als man als man als Nutzer braucht.
Das Auto besteht aus zig...Tausend Teilen, bis zum Kurbelwellenmaterial kommt auch nicht hin.

Gruss
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Hinkende vergleiche hin oder her - wenn ich diesen post hier lese und dann den anderen in dem du diese Daten augenscheinlich selbst erzeugst - dann frage ich mich wozu überhaupt das ganze Socket-Gehummse machst. Du bekommst die Daten vom Kerbal Space Server. Warum wertest du die da nicht direkt aus statt noch mal eine überflüssige Schleife zu drehen?
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Den krpc-Server kannst du nur Daten senden und von ihn Daten anfordern. Die du dann selber zerlegen musst um diese auszuwerten.
Er arbeitet nur mit Python , C++, C# oder Lua zusammen.
https://krpc.github.io/krpc/getting-started.html

In Purebasic habe ich mir ein Client aufgebaut zu Python , von da hole ich die Daten ab.

Dieser Cleint arbeitet nur mit dem krpc-Server:
conn = krpc.connect(name='Sub-orbital flight',
address='127.0.0.1',
rpc_port=1000, stream_port=1001)

Dieser Server im Python-Programm arbeitet arbeitet mit dem Purabasic-Clienten:
TCP_IP = '127.0.0.1'
TCP_PORT = 5000

Code: Alles auswählen

import time
import krpc
import socket

TCP_IP = '127.0.0.1'
TCP_PORT = 5000
BUFFER_SIZE = 64 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP, TCP_PORT))
s.listen(1)
con, addr = s.accept()

conn = krpc.connect(name='Sub-orbital flight',
       address='127.0.0.1',
       rpc_port=1000, stream_port=1001)
Gruss
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ah. Dann verstehe ich zwar immer noch nicht, warum du irgendeine Verarbeitung in Python machst, wenn eigentlic Pure-Basic genutzt werden soll. Aber die doppelte Serverei ist dann nachvollziehbar.
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Ganz einfach.
Dieses krPC für Kerbal wird als System für : Python,C++,C# und Lua geliefert.

Ich habe das System Python gewählt weil ich Lua nicht kenne und C zu kompliziert ist.
Aber mit Purebasic kann ich schneller eine Grafikdarstellung herstellen von den Daten und kann ruckzuck einen Server oder Clienten basteln mit Events.

Gruss
Antworten