UDPport an Matlab Daten senden

makke306

Lt. Junior Grade
Registriert
Mai 2010
Beiträge
291
Hallo,


Ich möchte gerne Daten von einem Roboter mit TCP/UDP mit dem Programm Matlab empfangen.

Dazu wollte ich vorerst mal einen Versuch auf meinem Laptop machen. Ich verwende das Programm Hercules um

Daten bzw. Zahlen mit Hercules an Matlab zu senden. Allerdings weiß ich nicht genau ob dies überhaupt funktioniert.

Bei mir funktioniert dies nicht, siehe Video.


Ich habe dazu das Matlab Programm gestartet und dann auch in Hercules die IP und Port eingegeben und auf "Listen" gedrückt.

Meine Idee wäre wenn ich Daten in Hercules eingebe sollten diese im Matalb Programm ankommen.


Ich habe mich ein wenig eingelesen da ich nicht viel von UDP verstehe. Aber ich komme trotzdem nicht weiter.
Also ich möchte gerne die udpverbindung testen bevor ich an dem Roboter gehe.

Hat jemand eine Idee ob und wie das funktioniert?



Danke für einen Tipp
 

Anhänge

  • test.mp4
    1,3 MB
Es scheint mir, dass Hercules selber einen port öffnet und dort hört. Das könnte im Konflikt mit dme Matlab-erstellten Port stehen.
Kann man Hercules so einstellen, dass er nur sendet und selbst keinen Socket öffnet?
Außerdem hast du eine Fehlermeldung im Matlab-Skript, dieser solltest du auf den Grund gehen
 
So ohne Ahnung aus der Hüfte geschossen 2 Probleme: Würde ebenfalls auf nen Portkonflikt* tippen. Zudem erwartet Matlab eine vollständige Zeile mit dem von dir konfigurierten Zeilenende. Das scheint zumindest nach Ausgabe im Hercules-SentData nicht enthalten zu sein.

Edit: * > Stell mal im Matlabskript die 62745 als Port ein. Da sendet dein Hercules ja hin, also musst du auch dort empfangen.
 
Ok, habe den Matlab Code angepasst. Habe auch den Port in Matlab 62745 gewählt, aber da kommt anscheinend nix an. Siehe Video. Nach ein paar Sekunden nach Start des Matlab-Skripts kommt die Meldung dass nix ankam. Ich weiß nicht ob Hercules überhaupt Daten sendet wenn ich einfach die Zahl 123 eingebe und auf senden drücke...😅
Gibt es sonst eine andere Möglichkeit an meinem laptop Daten mit UDP zu senden damit ich diese in Matlab empfangen kann. Also als Test um zu sehen dass Matlab Daten empfängt.
 

Anhänge

  • test2.mp4
    1,2 MB
Zuletzt bearbeitet:
Nun Matlab selbst sollte das natürlich hinbekommen. Alternativ erstmal ganz weglassen und als Empfänger z.B. ein netcat laufen lassen. Oder parallel mit Wireshark draufschauen, ob überhaupt was passiert. Am Ende blockt eine Firewall o.ä. dir grad den ganzen Versuch.
 
Ok, habe nun Wireshark installiert und Matlab weggelassen. Ich habe ein kleines video aufgezeichnet. Wenn ich zahlen sende kommt die Meldung Destination unreachable. Da von Netzwerkverbindungen nicht viel verstehe frage ich mal nach was das sein könnte. Also in dem Video sieht man diese Meldung. Ich glaube dass Wireshark die Daten nicht empfängt?
 

Anhänge

  • test3.mp4
    3,5 MB
Ich glaube immer noch, dass du Hercules falsch benutzt, kenne mich aber auch zu wenig dafür aus
An sich wird ja aber in Wireshark Datenverkehr von dem einem Port zu dem anderen angezeigt. Da dort aber nun keiner zuhört/die Daten empfängt, kommt als Fehlermeldung "Destination unreachable".

Teste doch nochmal mit gestartetem Matlab-Skript
 
Habe nun das Matlab Skript geändert und wie es aussieht empfängt Matlab nun Daten.

Ich sende die Zahl 12345 aber Matlab zeigt mir diese Zahlen an: 49 50 51 52 53.

So da habe ich nun keine Ahnung wieso da am Ende bei Matlab andere Zahlen ankommen.:confused_alt:
 

Anhänge

  • test4.mp4
    498,1 KB
Zahlen und Text sind zwei verschiedene Dinge. Hercules wird die Eingabe als Text (String) verschicken. Bei Matlab kommt alsl nicht Zahl=1 an sondern Text="1". Somit wird die 1 wie ein Buchstabe interpretiert und die Ordnungszahl für das Textzeichen "1" ist nun mal die 49. Gibst du nun 123 ein, wird das eben als "123" interpretiert, ein Text bestehend aus 3 Zeichen, nämlich "1" "2" und "3". Ergo kämen bei Matlab 49 50 51 an.

Ich habe keine Ahnung von Matlab, aber schau mal nach string conversion. Kurzes googeln brachte zB str2double, gibt ggfs auch str2int für ganze Zahlen. Musst mal etwas schauen ubd rumprobieren.
 
Zurück
Oben