2016-11-15 5 views
0

Ich möchte Vorlesungen vom ADC des Arduino über die serielle Schnittstelle senden, aber ich möchte sie als Binärdatei mit nur zwei Bytes senden.Wie Hex in 10 Byte Bytes konvertieren

Von der ADC-Konvertierung bekomme ich 10 Bits in zwei Bytes ADCH und ADCL, nehmen wir an, diese Bytes sind 0x03 (HI-Byte) und 0xFF (LO-Byte) bzw. als Int-Nummer 1023 (dezimal), und das ist die Wert, den ich senden möchte, dh zwei Bytes mit den "Dezimal" -Werten 0x10 bzw. 0x23 senden. Irgendeine Idee, wie das gemacht werden kann? Dank

+0

Unklar. In welchem ​​Format wird die '1023' in ACDH/L empfangen? Was ist ein "Basis 10 Byte"? In welchem ​​Format sollen die Werte "10" und "23" gesendet werden? Binär? BCD? Ungenügend angegeben. – EJP

+3

Bytes sind Bytes sind Bytes. Wenn es ein Byte ist, wissen weder Arduino noch PC, ob es eine Dezimal- oder Hexadezimalzahl gibt. Es ist die Byteform davon. Schreiben Sie es einfach in den seriellen Port. Der PC muss dann auch einfach wissen, wie man die Bytes interpretiert (zB wenn 2 oder 4 Bytes ankommen, ob Big oder Little Endian, signed oder unsigned, ...) – Matthias247

+0

Ich kann nicht glauben, dass du wirklich solche Unsinn-Daten willst Umwandlung. Warum nicht senden, wie es ist (entweder '{0xff, 0x03}' oder '{0x03, 0xff}') – datafiddler

Antwort

1

Die übliche Methode besteht darin, das Hex in eine Zahl zu konvertieren, und dann die Zahl in Dezimalzahlen umzurechnen. Schließlich nehmen Sie Zahlenpaare aus der Dezimaldarstellung und konvertieren sie in BCD (binär codierte Dezimalzahl), wobei jedes Nibble (4 Bits) einen Wert von 0 bis 9 enthält, um eine einzelne Ziffer darzustellen.

+1

Wohin kam BCD? – EJP

+1

Ich lese seine Idee der Darstellung von zwei Dezimalstellen pro Byte als grundsätzlich BCD. Rereading, das ist es, was er wahrscheinlich will, aber nicht absolut sicher. –

+0

@EJP: Kreative Schätzung von Jerry. Was würde (irgendwie) für Boris 'Bitte sinnvoll sein? ? – datafiddler