Mit UDP Daten von einem fremden Server empfangen?

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

Megamag

BeitragFr, Jan 30, 2009 16:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, es sendet definitiv etwas anderes.
Das ganze ist eine Multitouch Software.
Sie erkennt, wenn ich eine Fläche berühre, da die WebCam dann die
Fingerschatten auswertet. Diese Info sendet die Software dann über das
sogenannte TUIO (http://mtg.upf.edu/reactable/?tuio) Protokoll, welches
über UDP läuft an die Programme. Tja und wenn ich das Ding berühre, verändert
sich der Wert bei BB nicht, folglich stimmt da wohl irgendetwas nicht.
Ich hätte noch die Option über den C++ - Client, der ja funktioniert die Daten
zu empfangen und in eine txt-Datei zu schreiben, die dann von BB ausgewertet
werden kann. Dazu müsste ich aber C++ können...
Wenn jemand hier gut C++ beherrscht, kann er mir gerne behilflich sein Wink

Tankbuster

BeitragFr, Jan 30, 2009 17:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Halt.
Du ließt in meinem Beispiel immernur 4 Bytes aus, wenn eine Nachricht empfangen wird. Aus diesen 4 Bytes wird dann der Float- zusammengebastelt. Es kann gut sein, dass die ersten 4 Bytes einer Nachricht immer gleich sind. Du musst schon die ganze Nachricht, die geschickt wird, auslesen, um ein vernünftiges Ergebnis zu bekommen.

Wink
Twitter
Download Jewel Snake!
Windows|Android

Megamag

BeitragFr, Jan 30, 2009 17:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, wobei das Problem ist, dass ein Wert nicht genug ist.
Es müssen mindestens zwei sein. Nämlich x und y der Berührung.
Also äh, ich wüsste nicht, wie man mehr als einen Wert aus einem
UDP-Paket rausholen könnte.

tedy

BeitragFr, Jan 30, 2009 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
öfters readbyte machen ?

Schau dir doch einfach an wie das prog es sendet und weißt du was du lesen musst
01010100 01100101 01000100 01111001 00100000 00111010 01000100

Megamag

BeitragFr, Jan 30, 2009 17:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, aber ich kann mir nicht anschauen, was das Programm sendet.
Das ist das Problem. Und deshalb weiß ich auch nicht, wonach ich
suchen muss...

Valnar

BeitragFr, Jan 30, 2009 18:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Blitz4D hat Folgendes geschrieben:
Und deshalb weiß ich auch nicht, wonach ich
suchen muss...
Tankbuster hat Folgendes geschrieben:
Du musst schon die ganze Nachricht, die geschickt wird, auslesen, um ein vernünftiges Ergebnis zu bekommen.

Da steht die Lösung. Beispiele dafür findest du genug.

tedy

BeitragFr, Jan 30, 2009 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Duweißt nicht was das Programm sendet ? Wie willst du es dann lesen?
http://mtg.upf.edu/reactable/?tuio
01010100 01100101 01000100 01111001 00100000 00111010 01000100
 

Gast

BeitragDi, Feb 03, 2009 21:22
Antworten mit Zitat
Gut, ich schreib jetzt mal ein Code, der UDP Port 3333 abhört. Ich lese byteweise aus, in C# und co. werden floats anderst gesendet. Daher Byteweise. bis die nachricht zu Ende ist!

Code: [AUSKLAPPEN]
Global Seperator$ = "-------------------------------------------------------------------------------------"

SetBuffer BackBuffer()


Print "Öffne Stream..."
Stream = CreateUDPStream(3333)


If Stream = 0 Then
   Print Seperator$
   Print "Port 3333 belegt!"
   Print "<Enter> zum beenden!"
   WaitKey
   End
EndIf

Print "Stream geöffnet!"

Print "Höre Stream ab:"

Print "TextBox erstellen..."
Origin 5,95
Rect 0,0,200,200,0

Viewport 6,96,198,198

Flip

Print "Array erstellen..."

Dim MSG$(5,15,1)

; 5 : Vertikal angezeigt
; 10: Senkrecht
;  0: Neu oder nicht 1 Text!

For I = 0 To 5
   For J = 0 To 15
      MSG(I,J,1) = "N/A"
      MSG(I,J,0) = 0
   Next
Next

Print "Starte Empfangen!"


Repeat
   Cls
      If RecvUDPMsg(Stream) Then ; Stream abfragen
         Repeat
            X = X +1
            If X = 6 Then X = 0:Y = Y +1
            If Y = 16 Then Y = 0
            MSG(X,Y,1) = ReadByte(Stream) ; Auslesen!
            MSG$(X,Y,0) = 1
         Until ReadAvail(Stream) = 0
      EndIf
      ; Arry ausdrucken
      For I = 0 To 5
         For J = 0 To 15
            Color 255,255*(Int(MSG$(I,J,0))),0
            Text I*30+5,J*13+3,MSG$(I,J,1)+"|"
         Next
      Next
   Flip 0
Until KeyDown(1)

End


Ich hab den Code extra für dich geschreiben, ich hoffe er geht (getestet).

Flitzi

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group