Seite 2 von 3

Re: Fernsteuerung per WLAN

Verfasst: 16.12.2013 19:46
von derschutzhund
Wie wäre es, wenn Du Dir erstmal die notwendigen Grundlagen für Netzwerkprogrammierung erarbeitest?
Also, PureBasic.chm, wikepedia, Beispiele hier im Forum usw.
Ohne die notwendigen Grundlagen (ist nicht so schwer :wink: ) wirste uns hier ein Loch in den Bauch
fragen.
Wenn Du die Grundlagen verstanden hast, solltest Du auch in der Lage sein, Dein Projekt alleine umzusetzen,
mal abgesehen von dem Videogedöns.
Also ich denke ein Forum ist dazu da Fragen zu beantworten?

Durch eine einzige praktische Antwort kann ich nun schon Befehle an die Drone senden.
Ich finde das nicht unverschämt viel Aufwand für den der die Antwort schreibt oder?
Beispiele hier im Forum usw.
Das hatte ich gerade erfragt!
Ohne die notwendigen Grundlagen (ist nicht so schwer :wink: ) wirste uns hier ein Loch in den Bauch
fragen.
Wenn es doch nicht so schwer ist dann kann man es doch auch schnell erklären oder?
Ein Beispiel dazu und fertig :mrgreen:
Wenn Du die Grundlagen verstanden hast, solltest Du auch in der Lage sein, Dein Projekt alleine umzusetzen,
Das mache ich dann auch wenn ich weiß wie man:
1. Befehle sendet - ist im Grunde ja schon beantwortet-
2. Parameter abfragt (Daten von der Drone empfängt)
3. Videos empfangen kann

Bisher habe ich zu diesem Thema genau 5 Beiträge geschrieben. Das kann man ja wohl kaum als "ein Loch in den Bauch fragen" bezeichnen! Da wurden schon zu viel einfacheren Dingen viel mehr gepostet, aber das nur nebenbei!

LG

Wolfgang

EDIT: Wenn ich es richtig sehe dann ist meine Drone ja der Client und ich brauche ein Serverprogramm? Habe, auch hier im Forum nach einem passenden Einstieg für z.B. CreateNetworkServer gesucht aber nichts gefunden was mich weiter bringen würde. Die Hilfe im Programm beschreibt zwar die Parameter so ungefähr aber das nützt mir doch nichts wenn ich dann keine Ahnung habe wie es weiter geht. :oops:

Re: Fernsteuerung per WLAN

Verfasst: 16.12.2013 20:42
von ts-soft
derschutzhund hat geschrieben:Weshalb 3 Server? Sind die Server nur zum Empfangen (Informationen, Video)?
Senden kann ich mit dem Beispiel ja auch ohne einen Server.
Was sind UDP flags?
Solche Fragen wären einfach überflüssig, wenn Du Dir die Grundlagen erarbeitest hättest.
Durch Copy und Paste wirste nicht viel lernen. Programmieren besteht nunmal aus lernen, recherchieren
usw. und wenn man dann nicht weiter kommt und dieses Problem sich auf PB bezieht, kann man hier
gezielte Fragen stellen.

Erstmal Grundlagen:
OSI-Modell (nicht ganz so wichtige, aber mal gehört haben).
Protokolle (TCP, UDP, FTP usw., sollte man schon mal was drüber gelesen haben,
wenn man mit Netzwerken was programmieren möchte).

Beispiele gibt es hier im Forum ohne Ende, aber vielleicht nutzt Du mal selbst die Suchfunktion?
Es macht für ein Forum nicht viel Sinn, immer dieselben Fragen zu beantworten.
Spezielle Fragen zu Deinem Problem solltest Du aber natürlich hier stellen.

Wie Du kommandos sendest, haste ja inzwischen erfahren, das nächste wäre es die Antworten
auszuwerten. Dafür benötigst Du die entsprechenden Server, an die die Fernsteuerungssoftware diese
senden kann. Es ist jetzt egal, ob Du hier im Forum Beispiele zur Übertragung von Dateien, Text oder
Bildern anguckst, das Prinzip ist immer dasselbe.

Gruß
Thomas

Re: Fernsteuerung per WLAN

Verfasst: 16.12.2013 21:12
von Derren
derschutzhund hat geschrieben:Weshalb 3 Server? Sind die Server nur zum Empfangen (Informationen, Video)?
Senden kann ich mit dem Beispiel ja auch ohne einen Server.
Was sind UDP flags?
Na, weil das da eben so steht. Du musst gar keinen Server erstellen. Aber wenn du alles empfangen willst, dann brauchst du 3. In dem von dir zitierten Text steht das alles genau drin.
Ein Server für Daten, ein Server für Video und ein Server für "kritische Daten", was auch immer das heißen mag. Ist bestimmt anderswo genauer beschrieben. Fehlermeldungen, wie "Achtung, Schräglage, die nicht ausgeglichen werden kann" oder so.

Mit UDP-Flag mein ich das Flag (so nennt man die Parameter, die das verhalten der Prozedur beeinflussen). Wenn du einen Server erstellst, oder zu einem Server verbindest geht das standardmäßig über TCP. Wenn du #PB_Network_UDP (siehe den schon geposteten Code weiter oben) mit angibst dann wird UDP verwendet.
derschutzhund hat geschrieben:Hast du ein Beispielprogramm CreateNetworkServer + ReceiveNetWorkData ?
In der Hilfe findest du das. Und das Forum ist voll mit Fragen zu "Chats" und sonstigen einfachen Netzwerkanwendungen. Dort findest du auch weitere Beispiele.


@ts-soft: Man möge mich schlagen, wenn ich falsch liege, aber TCP/UDP und FTP heißen zwar Protokolle, haben aber nichts mit einander zu tun. FTP ist ein Datenprotokoll, das TCP verwendet. TCP und UDP sind Lowlevel-Übertragunsprotokolle.
FTP ist ein Audi, aber TCP und UDP sind Otto- und Dieselmotoren :P

Re: Fernsteuerung per WLAN

Verfasst: 16.12.2013 21:41
von ts-soft
FTP ist ein "Anwendungsprotokoll" und gehört damit auch zum Thema, genauso wie HTTP u. ä.
Reines Netzwerkprotokoll wäre aber nur TCP/IP, UDP, AppleTalk, NETBEUI, IPX/SPX usw. insofern
ist Dein Einwand nicht ganz unberechtigt.

Wenn er irgendwo die Netzgrundlagen erlernt, das Internet gibts so viele Infos, Tutorials usw., wird
er über alle diese Begriffe stolpern, von denen er schon mal gehört haben sollte.

An so ein Projekt rangehen, ohne jegliche Erfahrung oder Grundlagen, da wird er nicht weit kommen
und so ein Programmier-Forum ist nicht unbedingt dafür geeignet, ihm all dieses Wissen zu vermitteln.

Eine gewisse eigene Vorleistung sollte schon erbracht werden, schon im eigenem Interesse.

Gruß
Thomas

Re: Fernsteuerung per WLAN

Verfasst: 16.12.2013 21:44
von derschutzhund
Hallo Derren,

das bringt mich doch schon wieder etwas weiter!
Wenn es für die beiden "Datenkanäle" keinen Unterschied macht, ob es ein Chat ist oder Zahlenreihen von der Drone, dann kann ich nach chat suchen! Die Videoübertragung ist dann aber doch noch etwas ganz anderes oder?

LG

Wolfgang

Re: Fernsteuerung per WLAN

Verfasst: 16.12.2013 22:03
von Derren
Das mit dem Video sollte eigentlich beschrieben werden in deiner Hilfe, oder wo auch immer du den zitierten Text her hast.
Ich hab noch nie mit Codecs direkt gearbeitet, aber wenn du Glück hast musst du einfach nur die empfangenen Daten an eine DLL weiterleiten, von der du dann direkt den Videostream abgreifen und zeichnen kannst.

Re: Fernsteuerung per WLAN

Verfasst: 22.12.2013 01:05
von derschutzhund
Habe mir dieses kleine Chatprogramm angesehen.

Code: Alles auswählen

EnableExplicit

#BUFFERSIZE = 1024

Define *receiveBuffer = AllocateMemory(1024)
Define *sendBuffer

Define cid
Define name.s = "KeyKon2"
Define sendText.s

InitNetwork()

OpenWindow(0,0,0,640,480,"MiniChat",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)

ListIconGadget(0,10,10,620,430,"Chat",619)
StringGadget(1,10,450,620,20,"")

AddKeyboardShortcut(0,#PB_Shortcut_Return,0)

; cid = OpenNetworkConnection("192.168.1.1", 5556, #PB_Network_UDP)  ; sendekanal
cid = OpenNetworkConnection("192.168.1.1", 5554, #PB_Network_UDP)  ; statusrückmeldungen
If cid = 0
  Debug "FailConnection"
  End
EndIf

Repeat
 
  Select WaitWindowEvent(5)
    Case #PB_Event_CloseWindow
      CloseNetworkConnection(cid)
      End
     
    Case #PB_Event_Menu
      Select EventMenu()
        Case 0
          If Len(GetGadgetText(1)) > 0 And Len(GetGadgetText(1))+2 < #BUFFERSIZE
     ;       sendText = name+": "+GetGadgetText(1)
           sendText = GetGadgetText(1)+ Chr(13)
      
            *sendBuffer = AllocateMemory(Len(sendText))
            PokeS(*sendBuffer,sendText)
           
            If SendNetworkData(cid,*sendBuffer,MemorySize(*sendBuffer)) = MemorySize(*sendBuffer)
              AddGadgetItem(0,-1,sendText)
              SendMessage_(GadgetID(0),#EM_SCROLL,#SB_BOTTOM,0) ;Nach unten scrollen
              SetGadgetItemColor(0,CountGadgetItems(0)-1,#PB_Gadget_BackColor,RGB(192,192,192))
              SetGadgetText(1,"")
              sendText = ""
             
            EndIf
           
            FreeMemory(*sendBuffer)
           
          EndIf
      EndSelect
     
  EndSelect
 
  If NetworkClientEvent(cid) = #PB_NetworkEvent_Data
    If ReceiveNetworkData(cid,*receiveBuffer,#BUFFERSIZE) > -1
      AddGadgetItem(0,-1,PeekS(*receiveBuffer))
      SendMessage_(GadgetID(0),#EM_SCROLL,#SB_BOTTOM,0) ;Nach unten scrollen
     
    EndIf
  EndIf
 
ForEver
Es sollte doch eigentlich so sein, dass eingehende Daten sofort im Listicongadget angezeigt werden, aber da kommt absolut nichts an! Wo könnte da ein Fehler sein?

Re: Fernsteuerung per WLAN

Verfasst: 22.12.2013 10:35
von Bisonte
Wo ist der Server ?

Du brauchst einen Server und einen Client für die Kommunikation.
Ein Programm kann beides sein...

Nur ein Client... mit wem soll der "sprechen" ? ... mal so übertragen gefragt.

Re: Fernsteuerung per WLAN

Verfasst: 22.12.2013 13:11
von derschutzhund
Bisonte hat geschrieben:Wo ist der Server ?

Du brauchst einen Server und einen Client für die Kommunikation.
Ein Programm kann beides sein...

Nur ein Client... mit wem soll der "sprechen" ? ... mal so übertragen gefragt.
Der Server ist die Drone!
Es geht um die Kommunikation mit einem ferngesteuerten Quadrocopter!
Hier ein Ablaufdiagramm der Kommunikation welches ich leider nicht als Foto einbauen konnte!
https://www.dropbox.com/sh/4sunxh2fijgp ... ll-nav.jpg
Weil die Navigationsdaten ja an die Steuersoftware gesendet werden, gehe ich davon aus, dass die Drone der Server und die Steuerung der Client ist!
Doku: https://www.dropbox.com/sh/4sunxh2fijgp ... _Guide.pdf
In der Doku ab Seite 47 steht sinngemß man soll:
SendAT command: "AT*CONFIG=\"general:navdata_demo\",\"TRUE\"\\r".
Ack control command, send AT command: "AT*CTRL=0. The drone is now initialized and
sends Navdata demo.
Habe gesendet: "AT*CONFIG=\"general:navdata_demo\",\"TRUE\"\\r" auch als AT*CONFIG="general:navdata_demo","TRUE" + Chr(13)
aber es kommt absolut nichts zurück.
Irgendwo habe ich auf einer Internetseite gelesen, dass die NavDaten auch manchmal auf "224.1.1.1" zurück kommen, aber auch das hat nicht funktioniert!

Re: Fernsteuerung per WLAN

Verfasst: 22.12.2013 13:25
von derschutzhund
@Kiffi
Hast Du denn schon eine grundlegende Kommunikation mit Deiner Drohne hinbekommen?
1. Senden von Befehlen:
mit con = OpenNetworkConnection("192.168.1.1", 5556, #PB_Network_UDP) funktioniert eine Verbindung und ich kann Steuerbefehle senden

2. Empfangen von Navigationsdaten wie Flughöhe etc.
geht nicht!
Mit con = OpenNetworkConnection("192.168.1.1", 5554, #PB_Network_UDP) sollte eigentlich der Kommunikationskanal für diese Funktion definiert werden. Es kommt aber nichts zurück!

3. Kanal für "critical Infos von Drone"
sollte mit 5559 funktionieren, habe ich aber noch nicht getestet

4. Videoübertragung
sollte mit 5555 funktionieren, habe ich aber noch nicht getestet, bzw. weiß ich auch noch nicht wie man da ran geht.