Fernsteuerung per WLAN
Re: Fernsteuerung per WLAN
Du hast keinen Server erstellt. Du verbindest dich mit dem Server auf der Drohne. Dass das überhaupt funktioniert wundert mich ehrlich gesagt.
CreateNetworkServer() brauchst du. Die Drohne schickt dir dann die Daten zu diesem Server.
CreateNetworkServer() brauchst du. Die Drohne schickt dir dann die Daten zu diesem Server.
Signatur und so
-
- Beiträge: 328
- Registriert: 06.06.2013 20:37
- Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10
Re: Fernsteuerung per WLAN
Ok, also für mein Verständnis:Derren hat geschrieben:Du hast keinen Server erstellt. Du verbindest dich mit dem Server auf der Drohne. Dass das überhaupt funktioniert wundert mich ehrlich gesagt.
CreateNetworkServer() brauchst du. Die Drohne schickt dir dann die Daten zu diesem Server.
Bei den Netzwerken die ich kenne, gibt es einen Server und viele Clients.
Ich bin davon ausgegangen, dass der Server die Drone ist. Praktisch könnte das so sein, weil da im Grunde die Rechenleistung eines PC drin steckt und weil das Senden der Befehle mit OpenNetworkConnection funktioniert.
Die Drone könnte also der Server sein oder?
Kann es auch so sein, dass man für jeden Kanal 5554, 5555, 5556, 5559 entweder einen Server oder einen Client erstellen muss. Woher weiß man dann aber was man braucht?
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Fernsteuerung per WLAN
Bei Netzwerken, die ich kenne, gibt es viele Server (Hosts), sowie viele Server (Dienste) und noch mehr Clients
Der Server ist der Ansprechpartner Deiner Drohne, der Client spricht den Server auf der Drohne an.
Es werden also 3 Server auf Deinem PC erwartet, wenn Du alle Nachrichten benötigst. Sollte aber alles in dieser
PDF stehen, die ich nicht gelesen habe.

Der Server ist der Ansprechpartner Deiner Drohne, der Client spricht den Server auf der Drohne an.
Es werden also 3 Server auf Deinem PC erwartet, wenn Du alle Nachrichten benötigst. Sollte aber alles in dieser
PDF stehen, die ich nicht gelesen habe.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 328
- Registriert: 06.06.2013 20:37
- Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10
Re: Fernsteuerung per WLAN
Ich finde das wirklich toll, dass du so viel weißt, sogar ohne die Doku gelesen zu haben.ts-soft hat geschrieben:Bei Netzwerken, die ich kenne, gibt es viele Server (Hosts), sowie viele Server (Dienste) und noch mehr Clients![]()
Der Server ist der Ansprechpartner Deiner Drohne, der Client spricht den Server auf der Drohne an.
Es werden also 3 Server auf Deinem PC erwartet, wenn Du alle Nachrichten benötigst. Sollte aber alles in dieser
PDF stehen, die ich nicht gelesen habe.
Ist wirklich genial! Find ich absolut super!

Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Fernsteuerung per WLAN
Warum soll ich die Doku lesen, wenn ich die nötige Hardware nicht habe?
Der Rest sind Grundlagen. Ohne diese wird das wohl sehr langwierig, wenn überhaupt
Der Rest sind Grundlagen. Ohne diese wird das wohl sehr langwierig, wenn überhaupt

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Fernsteuerung per WLAN
Laut Doku verbindet sich deine Software nur als Client zu deinem Modell. Du musst also 2 Verbindungen aufbauen (OpenNetworkConnection), was du ja auch schon getan hast. Warum du allerdings keine Nachrichten empfaengst, kann ich dir nicht sagen.
Re: Fernsteuerung per WLAN
So funktioniert das, schon mal bei mir:
Die Drone ist der Server mit der IP 192.168.1.1
Die Drone ist der Server mit der IP 192.168.1.1
Code: Alles auswählen
EnableExplicit
#DQ = Chr(34)
Define *buffer, ARc.i, ARn.i, command$
Define t1.i, t2.i, CEvent.i, recData.i, *recBuffer, n.i
Define header.l, state.l, seq_nr.l, vision.l, id1.w, size1.w, id2.w, size2.w
Define ctrl_s.l, vbat_p.l, theta.f, phi.f, psi.f, altitude.l, vx.f, vy.f, vz.f
If InitNetwork() = 0
End
EndIf
*buffer = AllocateMemory(1024)
If *buffer = 0
End
EndIf
*recBuffer = AllocateMemory(1024)
If *recBuffer = 0
End
EndIf
ARc = OpenNetworkConnection("192.168.1.1", 5556, #PB_Network_UDP)
If Arc
ARn = OpenNetworkConnection("192.168.1.1", 5554, #PB_Network_UDP)
If ARn
;Send one packet to NAVDATA_PORT
PokeA(*buffer + 0, 1)
PokeA(*buffer + 1, 0)
PokeA(*buffer + 2, 0)
PokeA(*buffer + 3, 0)
SendNetworkData(ARn, *buffer, 4)
t1 = ElapsedMilliseconds()
Repeat
CEvent = NetworkClientEvent(ARn)
If CEvent = #PB_NetworkEvent_Data
recData = ReceiveNetworkData(ARn, *recBuffer, 1024)
Debug "recData: " + Str(recData)
Break
EndIf
t2 = ElapsedMilliseconds()
If (t2 - t1) >= 5000
Debug "Break"
Break
EndIf
Delay(1)
ForEver
If recData > 0
If recData = 24
header = PeekL(*recBuffer + 0)
state = PeekL(*recBuffer + 4)
seq_nr = PeekL(*recBuffer + 8)
vision = PeekL(*recBuffer + 12)
Debug "header: " + Hex(header)
Debug "state: " + RSet(Bin(state), 32, "0")
Debug "seq_nr: " + seq_nr
Debug "vision: " + vision
;Check status bit mask is activated: AR_DRONE_NAVDATA_BOOTSTRAP
If state & 1 << 10 = 1 << 10
;Send AT command (AT*CONFIG=1,"general:navdata_demo","TRUE")
command$ = "AT*CONFIG=1," + #DQ + "general:navdata_demo" + #DQ + "," + #DQ + "TRUE" + #DQ + Chr(13)
Debug command$
PokeS(*buffer, command$, Len(command$), #PB_Ascii)
SendNetworkData(ARc, *buffer, Len(command$))
t1 = ElapsedMilliseconds()
Repeat
CEvent = NetworkClientEvent(ARn)
If CEvent = #PB_NetworkEvent_Data
recData = ReceiveNetworkData(ARn, *recBuffer, 1024)
Debug "recData: " + Str(recData)
Break
EndIf
t2 = ElapsedMilliseconds()
If (t2 - t1) >= 5000
Debug "Break"
Break
EndIf
Delay(1)
ForEver
If recData > 0
If recData = 24
header = PeekL(*recBuffer + 0)
state = PeekL(*recBuffer + 4)
seq_nr = PeekL(*recBuffer + 8)
vision = PeekL(*recBuffer + 12)
Debug "header: " + Hex(header)
Debug "state: " + RSet(Bin(state), 32, "0")
Debug "seq_nr: " + seq_nr
Debug "vision: " + vision
;Send AT command (ACK_CONTROL_MODE)
command$ = "AT*CTRL=2,5,0" + Chr(13)
PokeS(*buffer, command$, Len(command$), #PB_Ascii)
SendNetworkData(ARc, *buffer, Len(command$))
EndIf
EndIf
EndIf
ElseIf recData > 24
header = PeekL(*recBuffer + 0)
state = PeekL(*recBuffer + 4)
seq_nr = PeekL(*recBuffer + 8)
vision = PeekL(*recBuffer + 12)
Debug "header: " + Hex(header)
Debug "state: " + RSet(Bin(state), 32, "0")
Debug "seq_nr: " + seq_nr
Debug "vision: " + vision
id1 = PeekW(*recBuffer + 16)
size1 = PeekW(*recBuffer + 18)
Debug ""
Debug "id1: " + Str(id1)
Debug "size1: " + Str(size1)
;NAVDATA_DEMO_TAG
If id1 = 0
ctrl_s = PeekL(*recBuffer + 20)
vbat_p = PeekL(*recBuffer + 24)
theta = PeekF(*recBuffer + 28)
phi = PeekF(*recBuffer + 32)
psi = PeekF(*recBuffer + 36)
altitude = PeekL(*recBuffer + 40)
vx = PeekF(*recBuffer + 44)
vy = PeekF(*recBuffer + 48)
vz = PeekF(*recBuffer + 52)
Debug "ctrl_s: " + RSet(Bin(ctrl_s), 32, "0")
Debug "vbat_p: " + Str(vbat_p)
Debug "theta: " + StrF(theta)
Debug "phi: " + StrF(phi)
Debug "psi: " + StrF(psi)
Debug "altitude: " + Str(altitude)
Debug "vx: " + StrF(vx)
Debug "vy: " + StrF(vy)
Debug "vz: " + StrF(vz)
EndIf
If recData > 24 + size1
id2 = PeekW(*recBuffer + 16 + size1)
size2 = PeekW(*recBuffer + 18 + size1)
Debug ""
Debug "id2: " + Str(id2)
Debug "size2: " + Str(size2)
EndIf
EndIf
EndIf
CloseNetworkConnection(ARn)
EndIf
CloseNetworkConnection(ARc)
EndIf
End
PB v5.72 x86/x64
Windows 10 Pro 64bit
Windows 10 Pro 64bit
-
- Beiträge: 328
- Registriert: 06.06.2013 20:37
- Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10
Re: Fernsteuerung per WLAN
@Chris
Was ich die letzte Zeit immer anders gemacht habe ist, dass ich die Befehle über 5554 zu senden versucht habe.
Jetzt ist klar, dass alles was vom PC an die Drone geht über 5556 läuft!
Vielen, vielen Dank für das Progrämmchen, damit kann ich jetzt erst mal weiter experimentieren!
Und das Ganze ist um so erstaunlicher als das es eigentlich garnicht gehen kann weil, ... auf dem PC wird ja kein Server definiert, obwohl der doch unbedingt auf dem PC gebraucht wird
Irgendwie muss ich mir die Grundlagen doch nochmal genauer anlesen
LG
Wolfgang
Ich bekomme auch einen Datensatz zurück!So funktioniert das, schon mal bei mir:

Was ich die letzte Zeit immer anders gemacht habe ist, dass ich die Befehle über 5554 zu senden versucht habe.
Jetzt ist klar, dass alles was vom PC an die Drone geht über 5556 läuft!
Vielen, vielen Dank für das Progrämmchen, damit kann ich jetzt erst mal weiter experimentieren!
Und das Ganze ist um so erstaunlicher als das es eigentlich garnicht gehen kann weil, ... auf dem PC wird ja kein Server definiert, obwohl der doch unbedingt auf dem PC gebraucht wird

Irgendwie muss ich mir die Grundlagen doch nochmal genauer anlesen

LG
Wolfgang
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Re: Fernsteuerung per WLAN
Sorry, hab das falsch gelesen -_- Anscheinend brauchst du tatsächlich keinen Server sondern verbindest dich nur mit der Drohne als Client.
Signatur und so
-
- Beiträge: 328
- Registriert: 06.06.2013 20:37
- Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10
Re: Fernsteuerung per WLAN
Hallo chris,So funktioniert das, schon mal bei mir:
Die Drone ist der Server mit der IP 192.168.1.1
noch mal vielen Dank für das Beispielprogramm!

Habe wirklich viel daraus gelernt! Nur so macht es Sinn!
Inzwischen kann ich ständig alle Daten aus der Drone auslesen und in einer einfachen, grafischen Oberfläche anzeigen.
Die Signalstärke mit der die Drone den PC empfängt habe ich bisher nicht gefunden kann ich bei den Dronenprofis aber noch mal nachfragen. Kannst du mir sagen, wie ich die WLAN-Signalstärke, die am PC angkommt, ermitteln kann?
Ideal wäre wenn ich die Signalstärke in beiden Richtungen hätte um dann gezielt die Reichweite erhöhen zu können.
Bei der Darstellung der Flugwinkel Roll, Pitch, Yaw hätte ich gerne ein kleines Flugzeug, welches sich nach den, von der Drone empfangenen Winkeln, dreht. Habe dazu in den Beispielen ein Programm gefunden, bei dem sich ein Roboter ständig dreht. Das könnte ich als Basis nehmen, da ich bisher noch nichts mit 3D in PB gemacht habe.
Weißt du, wo ich ein kleines Flugzeug als .mesh bekommen kann?
Wenn das Wetter wieder besser ist, mache ich dann den ersten Testflug!
Im nächsten Schritt muss ich dann das Video irgendwie auf den Bildschirm bekommen. Hast du dazu auch einen Tip?
LG
Wolfgang
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck