Hallo!
Binärzahlen lassen sich am kürzesten und einfach mit Hexadezimalen darstellen (vier Bits binär = 1 Zeichen Hex). Über Bascom habe ich k.A.
ich sende einen funkcode aus um mit einem intertechnofunkempfänger zu kommunizieren (> 64 millionen möglichkeiten).
die ersten 26 stellen des strings bilden die id und bestehen aus 0 und 1.
beispiel: 01011101010010101011101010
da das schwerer zu handeln ist weil ich so nicht einfach und übersichtlich erkenne welche funkcodes ich bereits vergeben habe, würde ich da gerne eine nummerierung einbauen.
ein teil des strings kann fix immer den selben wert haben (ich werde ja nie 64 millionen funksteckdosen anlernen wollen ) , der restliche teil soll nummeriert sein. 256 verschiedene möglichkeiten reichen für mein vorhaben mit ausreichender reserve aus. somit kann ich dann leichter erkennen, welche funkcodes ich anderen empfängern schon angelernt habe.
wie bekomme ich das mit Bascom hin?
----------------------------------------------------------------------------------------
Je tiefer die Sonne der Kunst sinkt, umso grössere Schatten werfen Zwerge!!
Hallo!
Binärzahlen lassen sich am kürzesten und einfach mit Hexadezimalen darstellen (vier Bits binär = 1 Zeichen Hex). Über Bascom habe ich k.A.
MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!
Ich würde auch Hex Darstellung empfehlen. Und wenn du mehr Stellen zur Verfügung hast als benötigt, kannst du sie benutzen um Ordnung und System in die Nummerierung einzuführen. Also z.B. erste Hex-Ziffer = Etage, zweite = Stromkreisnummer, oder Raumnummer, dritte bis letzte = laufende Nummerierung. Oder so ähnlich.
- - - Nachtrag 13:45 - - -
Der Vorteil von Hex ist, dass man die Zahl mit etwas Übung schnell hex<->bin im Kopf wandeln kann
Geändert von witkatz (25.02.2014 um 13:49 Uhr)
hallo,
noch kleiner: eigenes Zahlensystem auf Basis aller verfügbaren Zeichen a..z,A..Z,0..9,#..?
mfg
Achim
Vorschlag:... funkcode ... > 64 millionen möglichkeiten ... 256 verschiedene möglichkeiten reichen ...
i) Vorne 6 Bits dazu
ii) Diese nun 32 Bits (= long integer) aufsplitten in zwei Words
iii) Das "vordere" Word aufsplitten in zwei Bytes
iv) Das zweite Byte des vorderen Words ist der eigentliche Schlüssel mit 255 Varianzen, der Rest vom Schlüssel bleibt konstant.
v) Fazit: die 256 Möglichkeiten sind eindeutig erkennbar und handhabbar.
Anmerkung: natürlich muss man den Schlüssel nicht da vorne nehmen, man kann die Aufsplitterei (und das Zusammenfügen) auch mit den letzten acht Bits machen. Ich würde aus Gründen des "Hackens von Aussen" aber das Byte mittendrin nehmen, Arbeit bzw. Aufwand bleiben im Prinzip gleich.
Durchführung etwa so mit Deinem
beispiel: 01011101010010101011101010
Die Punkte sind hier nur Platzhalter um das automatische Beschneiden von Leerstellen zu verhindern
Dieses Byte ist Dein Schlüssel, die hier durch x repräsentierten Ziffern bleiben für alle Deine Schlüssel gleich. Bei Verwendung als Schlüssel werden nur die benötigten "unteren" 26 Bits genommen. UND für eine gute Übersicht ist das hier variante Byte als Dezimalziffer einfach darstellbar.Code:Jetzt Auffüllen mit Nullen am MSB-Ende (ganz vorn): beispiel: ..------0101110101 0010101011101010 Neuer Wert: 0000000101110101 0010101011101010 In 2 Word Zerlegen: ..0000000101110101 0010101011101010 höherwertiges Word in 2 Bytes zerlegen Ursprung: ..00000001 01110101 0010101011101010 Zerlegt: ...xxxxxxxx 01110101 xxxxxxxxxxxxxxxx
Warum das Ganze? Weil das Zerlegen und Zusammenfügen von Bytes (also 8 Bit in EINER Gruppe) zum Standard von Programmiersprachen gehört - - sagt einer, der keine Ahnung von Bascom hat *ggg*.
https://www.roboternetz.de/community...zusammenfassen
http://www.mikrocontroller.net/topic/83140
http://www.rn-wissen.de/index.php/Ba...Long-Variablen
Ciao sagt der JoeamBerg
ich hab jetzt einfach den string zerlegt und die ersten 8 stellen jeweils in 2 gruppen zu je 4 als bcd wert angegeben. danach steht eine 1 für "ein" oder eine 0 für "aus" senden. der restliche string ist immer der selbe. ich sende nun also nur noch z.b. " 01 16 1" so habe ich 16 x 16 möglichkeiten = 256.
kann nun mit meiner hausautomation also auch die günstigen intertechno empfänger bedienen nachdem die fs20 komponenten leider immer teurer werden.
----------------------------------------------------------------------------------------
Je tiefer die Sonne der Kunst sinkt, umso grössere Schatten werfen Zwerge!!
Gratulation !
Du hast die einfachste für dich Kombination gewählt. Übrigens die 4-bittige Dezimalzahl kann sich "normaler" Mensch (also kein ASMan) besser als Hexzahl merken.
MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!
Lesezeichen