German AsyncStreamsObject

howt

Member
Licensed User
Longtime User
Hallo liebes Forum,

kaum beginne ich mit dem ersten Prog, schon benötige ich Hilfe.

Das Beispiel AsyncStreamsObject habe ich soweit, dass es eine Verbindung zum PC aufbaut.
Allerdings sende ich nur einen kurzen Text und erhalte am PC nur Müll.
Es kommen 98 Bytes an obwohl nur 12 Bytes gesendt werden.
Im Log steht es noch richtig !

Diese Routine sendet die Daten:
B4X:
Sub btnSendForm_Click
    Dim p As Person

    p.First = "hallo, hallo"
    p.Last = txtLast.Text
    p.Animal = txtAnimal.Text
    Log("Test" &  p.First)
    astreamO.WriteObject("form", p.First)
End Sub
und ich erhalte am PC:
onRead, IP=192.168.28.158, LocalPort= 1340 , RemotePort= 1340
Empfange 98 Bytes ->" R  ¬í wt form  ¬í wt ao1 (‹ [󖁵œ‘„'#1''_GL uü1 ÐrT"<-Ende

Da sollte doch eigendlich "hallo, hallo" ankommen..
Kann mir das jemand erklären ??
 

DonManfred

Expert
Licensed User
Longtime User
Gibt es auch ein WriteString? du beziehst dich hier ja explizit auf p.First (also einen string), willst bzw musst jedoch ein Object übergeben. Vermutlich wäre
B4X:
astreamO.WriteObject("form", p)
richtig.

ansonsten vielleicht

B4X:
dim first as string
first = "hallo hallo"

astreamO.WriteObject("form", first)

Ich kenne mich mit Streams nicht so gut aus...
 

howt

Member
Licensed User
Longtime User
Hallo Manfred,

du schläfst wohl auch niemals....
Mit dem String hatte ich schon ausprobiert, gleiches Ergebnis.
Es kommen 97 Bytes rüber, die nur den Text "form" erkennen lassen. Eigenartigerweise kommen vor "form" auch noch irgendwelche Zeichen, die da nicht sein sollten. Die Empfangsroutine läuft seit Jahren stabil, da kann kein Fehler sein. Ich suche mal nach "WriteString" und lese mich mal weiter ein.

Danke für die Mühe und noch einen schönen Sonntag.

Walter
 

DonManfred

Expert
Licensed User
Longtime User
Das Problem wird sein, das ein B4A-Objekt vermutlich anders "rüber kommt" als du es vielleicht erwartest...

Vielleicht solltest Du hier mal die "gegenseite Posten; quelltextmässig...

Vielleicht kann man da ja mehr raus erfahren wie die Daten übermittelt werden müssen. Noch grösser ist die Chance auf hilfe aber definitiv im englischen Bereich des Forums. Da lesen tausende mehr Leute mit als im deutschen Forum. Wir sind hier wirklich eine Minderheit ;)
 

howt

Member
Licensed User
Longtime User
Hier kommt man nicht zum Schlaf. Zuviel Tiere, zuviel Menschen, zuviel Arbeit.

Naja meine Erwartungshaltung ist halt diese, dass ich auf der einen Seite Daten sende und auf der anderen Seite diese wieder empfangen kann.
So eine Routine sollte ja Byte-Transparent die Daten übertragen. (kann mich ja auch irren).
Die Gegenseite (Quelle) zu posten macht wenig Sinn. Die ist in Assembler für eine Microchip-Pic16F258 geschrieben.
Von den Geräten sind ca. 1000 Stück im Einsatz, kaum anzunehmen, dass da noch ein Fehler drin ist.
Ich lasse mir die Empfangsdaten über die serielle Schnittstelle auf dem PC ausgeben. Und nehme mal an,
dass die Terminalprogramme nicht alle gleichzeitig spinnen. Die Controller arbeiten ja im übringen Netzwerk seit
vielen Jahren fehlerfrei, deshalb schliesse ich von der Seite auch die Fehler aus.
Ich habe irgenwo gelesen, dass die Daten binär gesendet werden. Was man jetzt auch immer unter binär versteht
versuche ich gerade mal zu ergründen. Ich sage dir als Assembler und C-Programmierer hat man es nicht leicht in Basic einzusteigen.
 

DonManfred

Expert
Licensed User
Longtime User
Ich habe mit Microchips, assembler und erst recht C, C++ quasi NULL Ahnung. Es mag sein das die Geräte schon lange im Einsatz sind und wohl auch fehlerfrei arbeiten...

Wenn dann was nicht klappt dann muss man den Fehler in der B4A-Seite suchen.
Von daher, so hatte ich spekuliert, wäre die info über die Gegenseite von interesse.

ICH kann in dieser Richtung leider keine Hilfe beitragen.
 

howt

Member
Licensed User
Longtime User
Volltreffer !!
Du bist für mich der Größte!! Wieso dann "ICH kann in dieser Richtung leider keine Hilfe beitragen."
Da ist ein Beispiel von dem ByteConverter dabei, den kann ich leicht für mich anpassen und sogar in Assembler einbauen oder eben
die Daten gleich in ASCII senden. Das muss ich mir jetzt mal in Ruhe auf der Zunge zergehen lassen.

Vielen, vielen Dank.
 

DonManfred

Expert
Licensed User
Longtime User
Ich bin da eben beim lesen durch zufall drauf gestossen als es darum ging, das dieser Thread wohl die Lösung beim suchenden gewesen ist. Das Problem klang für mich irgendwie "ähnlich" und da habe ich das einfach mal ins blaue rein hier gepostet.

Freut mich, das es vermutlich die Lösung für dein Problem ist! :)
 
Top