union in visual basic

Gast #385098
Lesenswert?

Hallo.

Ich bin hier langsam am verzweifeln. Vielleicht könnt ihr mir ja
helfen.

Ich habe eine Schnittstelle über RS232 zwischen einem ATmega und einem
PC realisiert. Diese funktioniert auch soweit.
Ich möchte nun float-Werte (in VB single-Werte) byte-weise übertragen.
in C ist dieses Vorhaben nun wirklich kein Problem, hier geht es über
eine union.

In VB greife ich auf eine tabelle zu, welche die Floats(Single) Werte
in einer Spalte aufführt. Ich kann aber in VB die 4 Bytes des
single-Wertes nicht extrahieren. Dazu fehlt mir ein Befehl oder die
passsende Idee.

Kann mir vielleicht jemand helfen?

habe schon das gesamte I-Net abgesucht..... und kein Glück gehabt :-(

THX,
Gast #385099
Lesenswert?

>In VB greife ich auf eine tabelle zu, welche die Floats(Single) Werte
>in einer Spalte aufführt. Ich kann aber in VB die 4 Bytes des
>single-Wertes nicht extrahieren. Dazu fehlt mir ein Befehl oder die
>passsende Idee.

Übertrage sie doch einfach als Text. Also "1.234".

Wer sagt dir dass dein PC und dein ATMega die gleiche Anzahl von Bytes
 haben? Ok. das kann noch sein...
Aber die gleiche Anordnung der Bytes im Speicher? Da wird es aber schon
sehr problematisch.
Wenn du etwas mehr Kontrolle über die Kommunikation haben willst, warum
schreibst du das Kommunikationsmodul auf dem PC nicht in C, als DLL oder
COM-Objekt und die Oberfläche in VB. Dann muss man sich auch keine
Sorgen mehr machen ob man bei Zeichenketten mit 8bit oder 16Bit Zeichen
zu tun hat und kann die einzelnen Bytes bequem wieder zu Zahlen
zusammensetzen. Du kannst dann Events an deine Oberfläche schicken wenn
etwas passiert.
Es mag beim ersten Mal schwieriger sein aber es lohnt sich in jedem
Fall. Der Code wird durch die saubere Trennung zwischen Oberfläche und
Kommunikation wesentlich überischtlicher und leichter zu warten.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren