Pages: [1]   Go Down
Author Topic: 16 Schalterstellungen in HEX umrechnen und per seriell senden?  (Read 613 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo zusammen.
Ich moechte 16 Schalterstellungen (ON oder OFF) auslesen und die Information ueber den Zustand der Schalter per serieller Nachricht verschicken.
Um Platz zu sparen (die serielle Botschaft wird spaeter noch laenger) wollte ich die Information von BIN in HEX umrechnen, also beispielsweise von 1111111100000000 zu F0.
Ich probiere seit Tagen herum, bin mir aber mittlerweile noch nicht mal mehr sicher, ob das ganze ueberhaupt Sinn macht und leider hat sich auch noch keiner meiner Ansaetze als erfolgversprechend herausgestellt.
Ich bin Anfaenger und kein Informatiker und bitte daher um Nachsicht. Vielleicht koennt ihr mir einen Schubs in die richtige Richtung geben, damit ich weis wie ich anfangen sollte.
Probleme bisher: ich kann aus den einzelnen Schalterstellungen keine mehrstellige Binaerzahl machen, mit boolean Array habe ich herumgespielt aber bin nicht zu nem Ergebnis gekommen.
Aus ner B111111100000000 ne 0xF0 zu machen hab aber selbst ich schon geschafft smiley
Wie gesagt, wuerd mich freuen wenn ihr mir sagen koenntet wie ich am besten anfangen soll.
Danke!
Logged

Offline Offline
Full Member
***
Karma: 5
Posts: 209
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

Hex = 16er Zahlensystem kann nur 4 Schalter eindeutig übertragen 1111 = F

d.h. Dein Beispiel ist falsch.
1111 1111 0000 0000 ist FF00
für 16 Schalter brauchst Du 16 Bit = 1 Wort = 2 Byte = 4 Hex-Werte

versuchs mal damit

Ausserdem glaube ich nicht, dass Du damit Platz sparst.
Du hast nur eine andere Darstellungsform Deiner Werte.

Gruss
kurti
« Last Edit: March 08, 2012, 02:03:36 pm by kurti » Logged

Es gibt nur 10 Arten von Menschen: die, die das Binär-System verstehen und die, die es nicht verstehen.

Offline Offline
Newbie
*
Karma: 1
Posts: 38
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das Problem scheint ja zu sein, die 16 einzelnen Werte bitweise zusammenzubasteln.

Code:
unsigned int result=0;
for (byte i=0; i<16; i++){
  result |= (switch[i]&1)<<i;
}

oder so ähnlich oder auch eleganter ...
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Kurti,
vielen Dank fuer die Antwort. Du hast natuerlich recht, ich meinte natuerlich FF00.
Ja, die Sache mit dem Platz sparen. Ich hatte schon so ein Gefuehl, kenne mich aber ja nicht wirklich damit aus, daher wollt ich das mal von jemandem bestaetigt haben der weiss, von was er redet.
@ flohzirkus:
Vielen Dank! Werd mir das mal genauer anschauen smiley
Logged

Pages: [1]   Go Up
Jump to: