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,
>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.
VB hat in der .Net-Version die Unterstützung von Unions (unter anderem Namen) bekommen. Siehe z.B.: http://www.devx.com/vb2themax/Tip/18825 oder http://www.microsoft.com/germany/msdn/library/net/vbnet/ByteweiseZerlegungInVBNET.mspx?mfr=true
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.