Forum: PC-Programmierung [Visual Basic] Mit Binärdaten arbeiten.


von Dieter S. (schmaddy)


Lesenswert?

Hallo,

ich möchte mit einem VisualBasic Programm meinen ATmega über die 
Serielle Schnittstelle ansteuern. Wie ich die Serielle Schnittstelle mit 
VB anspreche weiß ich, mein Problem ist aber das ich nicht weiß wie ich 
in VB mit Binären Daten umgehen soll. z.b. 01010101 da mein µC diese 
erwartet.
1
        'Das war meine erste Idee
2
        Dim meinbyte As Byte
3
        meinbyte = 01010101
4
        Label1.Text = meinbyte
Als ausgabe bekomme ich den wert meinbyte ohne die voranngestellte Null, 
was doch soviel bedeutet, das dies nicht funktioniert wie ich mir das 
gedacht habe. (Er behandelt den wert ja jetzt so wie eine "Zahl", wenn 
er die null abschneidet.

Auch wenn ich diesen wert über die Serielle Schnitstelle ausgebe, 
empfängt mein µC 7 byte (56-bit)  und nicht ein byte (8-bit).

Ich möchte nähmlich über die Textbox auch "manuell" byte werte eingeben 
und absenden. Also 8 einzelne nullen und einsen eintippen, und die 
sollen als ein byte weggehen.

Bei MSDN steht zum Byte Datentyp folgendes:
1
Enthält 8-Bit-(1-Byte-)Ganzzahlen ohne Vorzeichen im Wertebereich von 0 bis 255.
Also bedeutet das eventuell, das ich meinen wert der Textbox ersteinmal 
"manuell" in eine ganzzahl umwandeln muss z.b. "01010101" in 85 und die 
85 dann als datentyp byte per Serieller Schnitstelle ausgeben muss? Weil 
das wäre ja umständlich wenn ich da evtl eine wertetabelle abgleichen 
muss.

Ich hoffe Ihr konntet mich verstehen
Danke und Gruß
Schmaddy

von Peter II (Gast)


Lesenswert?

Dieter S. schrieb:
> Also bedeutet das eventuell, das ich meinen wert der Textbox ersteinmal
> "manuell" in eine ganzzahl umwandeln muss z.b. "01010101" in 85 und die
> 85 dann als datentyp byte per Serieller Schnitstelle ausgeben muss? Weil
> das wäre ja umständlich wenn ich da evtl eine wertetabelle abgleichen
> muss.

ja das muss man machen, dafür schreibt man sich ein kleine funktion. 
Alles was jemand über die GUI eingibt ist TEXT mit diesem kann der 
computer nicht rechnen.

woher soll denn jemand wissen was

010101

sein soll? Es kann eine dezimale zahl sein, es kann eine Binäre zahl 
sein, es kann eine oktale zahl sein und auch noch eine Hexzahl.

von Dieter S. (schmaddy)


Lesenswert?

Okay, dann weiß ich worann es liegt, und werde die werte also abgleichen 
müssen.
Danke

von Jens (Gast)


Lesenswert?

Hi,

ma rechnet 1*1 + 0*2 + 1*4 + 0*8 + 1*16 etc... dazu muss die eingabe 
zerlegt und jede Stelle als Ziffer gewandelt werden um dann die 
entsprechende Zahl zu erreichenen.

Wenn man das über die serielle schnittstelle übermitteln will, ist die 
frage was man am anderen Ende erwatet. Erwartet man 8 Bit mit dem 
binären inhalt von 85d kann man es so verschicken, ansonsten muss man es 
dann BCD wandeln, und die zwei tetraden mit 30h "geodert" versichen, 
dann bekommt man 2 ASCI Zeichen unswar die '5' und die '8' also 35h und 
83h.

Gruß,
JJ

von Uwe (Gast)


Lesenswert?

War früher nicht &H als prefix für Hexadezimal.
&O war Oktal wäre logisch wenn &B Binär ist.

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
Noch kein Account? Hier anmelden.