Toon posts:

[Flash] Wat wil onXML nou ontvangen?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een VB app welke Flash 5 voorziet van een XML string. Vanuit Flash 5 stuur ik naar de VB app een stukje XML. Zodra deze informatie is binnengekomen stuur ik deze informatie ongewijzigd terug en pakt de onXML functie de informatie netjes op en geeft deze in mijn textveld weer.

Nu ga ik vanuit mijn VB app exact dezelfde info (voor het oog) versturen, maar pakt Flash deze totaal niet op. De onXML handler vertoont geen kick.

Nu vraag ik mij dus af, wat voor verborgen info heeft onXML nog meer nodig?

Verwijderd

Example? Ik begrijp je verhaal nl niet helemaal.

Verwijderd

Topicstarter
Op woensdag 20 maart 2002 11:35 schreef B-Top het volgende:
Example? Ik begrijp je verhaal nl niet helemaal.
Kan ik me goed voorstellen :)

Wat wil ik dus doen, en het verhaal erachter:
1) Ik ga een virtuele raadszaal creeren in Flash. Als iemand in de echte raadszaal zijn microfoon indrukt, moet het ID behorende bij deze microfoon worden verzonden naar de Flash animatie. Het conferentie systeem bestaat uit het Philips Digital Congress Network. Dit systeem verstuurd via Netbeui continue met het DDE protocol informatie mbt tot: "Wie is er aan het spreken?".

Deze informatie onderschep ik middels een applicatie die ik in VB heb geschreven. Deze VB applicatie zet vervolgens de DDE info om naar een XML string:

<micdata mic1=23 mic2=16 mic3=5 />

Deze data wil ik vervolgens naar de Flash animatie versturen dus heb ik gebruik gemaakt van XML Sockets onder Flash 5. Via het Winsock object in VB verstuur ik vervolgens naar het gekozen IP adres en Port via TCP/IP de XML string. De flash animatie leest deze vervolgens uit, en laad dan de foto's van de sprekers behorende bij de microfoon data.

Tot zover nog duidelijk? :D

Nu heb ik eerst wat testjes gedaan. Ik heb connecties gemaakt tussen Flash en de VB app, dat ging allemaal vlekkeloos. Vervolgens vanuit Flash 5 met sock.send(message); een bericht verstuurd over de XML Socket, die kwam ook aan. Dit bericht vervolgens ongewijzigd vanuit VB terug gestuurd naar Flash 5, dat ging ook vlekkeloos.

Vervolgens wil ik vanuit VB een bericht sturen, ipv het Flash 5 bericht terug te sturen, en dan gaat Flash 5 moeilijk doen, en reageert die niet op de broadcasts. Dubbelchecks leveren identieke strings voor het oog op.

Oftewel, wat verzend Flash 5 wel, wat ik niet verzend.

Verwijderd

Ik gok zo dat het aan je xml ligt.(of tenminste aan je xml samen met flash ...) ik zou willen voorstellen dat je xml ff laat vallen en met je 'eigen' protocolletje komt ?
Gewoon om te testen.

Klinkt trouwens als een erg leuyk projectje :) .... ennuh...ik ben best geinterreseerd in je vb-socket-flash code :)

Verwijderd

Topicstarter
Ik denk dat ik wel weet waar het aan ligt.. in de handleiding wordt er het volgende gezegd:
Each XML message is a complete XML document, terminated by a zero byte.
Nu is een zero byte normaliter een ASCII null byte en die staat gelijk aan "\0"

Nu verstuur ik vanuit VB het volgende naar de Flash 5 XML Socket toe, en dan gebeurt er niets.

sckConn.SendData "<micdata mic1=""23"" mic2=""16"" mic3=""5"" />\0"

Verwijderd

Topicstarter
Ik ben erachter.. Flash 5 wil dus speciaal dat je afsluit met een zero byte. Dat wil zeggen CHR(0) in VB en "\0" in Perl.

Flash 5 ontvangt nu de data zoals gehoopt via de XML Sockets. :)

B-Top, herinner me eventjes over 1,5 a 2 wkn. dan stuur ik je de complete sourcecode alsmede de *.fla naar je toe :) Ik heb nu nog teveel rotzooi in de code zitten en ik zend je liever iets erm..toonbaarders.. de code kan ik nu wel even posten voor je..
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Option Explicit

Private Sub cmdServerListen_Click()
    Log "Server: Start met luisteren, port " & txtServerPort.Text
    With sckServer
      .Protocol = sckTCPProtocol
      .Bind CInt(txtServerPort.Text)
      .Listen
    End With
    cmdServerListen.Enabled = False
    cmdServerStop.Enabled = True
End Sub

Private Sub cmdServerStop_Click()
    Log "Server: Stop met luisteren"
    sckServer.Close
    cmdServerListen.Enabled = True
    cmdServerStop.Enabled = False
End Sub

Private Sub Log(Text As String)
    lstLog.AddItem Text
    lstLog.TopIndex = lstLog.NewIndex
End Sub

Private Sub sckConn_Close()
    Log "Server: Connectie gesloten"
    sckConn.Close
End Sub

Private Sub sckConn_DataArrival(ByVal bytesTotal As Long)
    Dim strData As String
    Log "Server: " & bytesTotal & " bytes of data ontvangen"
    sckConn.GetData strData, vbString, bytesTotal
    strData = "test" & Chr(0)
    Log "Server: Data: " & strData
    Log "Server: Verstuur wat data terug: " & strData
    sckConn.SendData strData
    End Sub

Private Sub sckConn_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
    Log "Server: error: " & Number & " (" & Description & ")"
End Sub

Private Sub sckServer_ConnectionRequest(ByVal requestID As Long)
    Log "Server: Inkomende connectie, requestID: " & requestID
    If sckConn.State = sckClosed Then
      sckConn.Accept requestID
      Log "Server: Connectie geaccepteerd"
    Else
      Log "Server: Server is bezet, connectie afgewezen"
    End If
End Sub

Verwijderd

Ahh, ik dacht dat je een situatie had waarin het wel werkte, en een waarin het niet werkte........vandaar de verwarring....maar koel....ben echt benieuwd naar je vb code btw :) ben toevallig met iets soortgelijks bezig.

Verwijderd

Topicstarter
Op woensdag 20 maart 2002 12:48 schreef B-Top het volgende:
Ahh, ik dacht dat je een situatie had waarin het wel werkte, en een waarin het niet werkte........vandaar de verwarring....maar koel....ben echt benieuwd naar je vb code btw :) ben toevallig met iets soortgelijks bezig.
De situatie waarin het wel werkte was als ik vanuit Flash 5 via de XML Socket een pakketje met data verstuurde, deze vervolgens via de VB weer terugstuurde en via Flash 5 opvroeg. :)

De situatie waarin het niet werkte was als ik vanuit VB een eigen pakketje maakte en deze naar de Flash Socket stuurde. Ik miste simpelweg de zero byte afsluiting die Flash nodig had :)
Pagina: 1