Autor |
Arduino Daten wandeln Suche nach: arduino (708) |
|
|
|
|
BID = 1092419
BlackLight Inventar
Beiträge: 5334
|
|
Zitat : Murray hat am 7 Jan 2022 08:38 geschrieben :
| Also es ist eine HEX 58 am Gerät, er zeigt im Display auch 58 an.
[...]
Vielleicht war da wirklich mal ein Display mit BCD zu 7-Segment-Anzeige dran.
| Das wäre für mich ein klassisches Beispiel für den "Binary Coded Decimal"-Code.
Wenn ich Wiki richtig verstehe, war der Hauptgrund tatsächlich die einfachere Anzeige/Ausgabe per BCD-zu-7-Seg-Dekodierer.
Zitat : Jornbyte hat am 6 Jan 2022 23:45 geschrieben :
|
Zitat :
| Also aus HEX 58 ein HEX 3A (58) machen. |
Ist das nun HEX 58 oder HEX 3A?
Oder soll das DEC 58 und HEX 3A sein?
Wer soll das Verstehen.... | So langsam verstehe ich was Murray mit HEX sagen möchte. Ich hätte es eher binär oder direkt BCD genannt.
HEX ist hier nicht gleich 0x sondern eher sowas wie HEX-Vierertupel-BCD...
0101 1000BCD = binär(BCD) 58 = 58(10) = 0x38
Btw:
Für den Computer sind das alles nur Nullen und Einsen.
Witzig sind schon negative integer-Zahlen mit Betrag und Vorzeichen, dem Einerkomplement und Zweierkomplement.
Interessant wird es dann bei IEEE754-Gleitkommazahlen (32 bit).
Für 64 bit (double) hatte ich letztens nicht einmal so ein Tool finden können.
Dann gibt es noch zig andere Interpretationen von Nullen und Einsen. |
|
BID = 1092426
roger34 Neu hier
Beiträge: 40
|
|
[quote]
BlackLight schrieb am 2022-01-07 17:56 :
Zitat : Murray hat am 7 Jan 2022 08:38 geschrieben :
| Also es ist eine HEX 58 am Gerät,
0101 1000BCD = binär(BCD) 58 = 58(10) = 0x38
|
Nein. Ein Binärwert mit 8 Bit wird immer gleich interpretiert. Hier gibt es das BCD nicht.
Bin=0101 1000
HEx=0x58
DEC=88 Basis 10.
Ich glaube ältere Geräte hatten beim Wandeln vielleicht einen BCD ausgang für die Anzeige.
|
|
BID = 1092436
Murray Inventar
Beiträge: 4887
|
Für die alten Siebensegmentanzeigen waren halt Dekoder mit BCD-Eingang üblich. Das stammt wohl noch aus den Zeiten wo es nicht mit LCD gemacht wurde.
Jetzt hänge ich bei der Datenübergabe über WLAN fest.
Kann mich da zwar anmelden aber da geht es nicht weiter. Kommt nichts auf meiner Domain an. Immer nur ">>> Client Timeout !" vom ESP.
Ein ähnliches Projekt über Ethernet mit Arduino lief damals gleich problemlos.
Gibt es da Unterschiede oder liegt das am ESP32?
|
BID = 1092440
BlackLight Inventar
Beiträge: 5334
|
Offtopic :
|
Zitat : roger34 hat am 7 Jan 2022 19:33 geschrieben :
| Nein. Ein Binärwert mit 8 Bit wird immer gleich interpretiert. | Sehe ich anders, je nach char, int, uint, pointer … stellt es jedes mal was anderes dar.
Oder reden wir aneinander vorbei?
Zitat :
| Hier gibt es das BCD nicht.. | Verstehe ich nicht. |
@Murray: Bei ESP32 muss ich leider passen. Meine liegen noch eingeschweißt bei den LM317-Modulen…
|
BID = 1092443
Murray Inventar
Beiträge: 4887
|
Zitat :
BlackLight hat am 7 Jan 2022 17:56 geschrieben :
|
0101 1000BCD = binär(BCD) 58 = 58(10) = 0x38
|
Das ist ja auch falsch.
das 1. ist binär, nicht BCD
das 2. ist HEX (oder halt BCD)
das DEC (10) ist nicht 58 sondern 88 = 0x58
|
BID = 1092445
Jornbyte Moderator
Beiträge: 7190
|
Bei dem Durcheinander bin ich raus.
_________________
mfg Jornbyte
Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.
|
BID = 1092455
Murray Inventar
Beiträge: 4887
|
Das war eine Geburt ...
Beim ESP32/Wifi muss man die HTTPClient-Bibliothek einbinden, dann geht das Schreiben auf die Domaine/Datenbank auch
|
BID = 1092460
BlackLight Inventar
Beiträge: 5334
|
Offtopic :
|
Zitat : Murray hat am 7 Jan 2022 21:31 geschrieben :
|
Zitat :
BlackLight hat am 7 Jan 2022 17:56 geschrieben :
|
0101 1000BCD = binär(BCD) 58 = 58(10) = 0x38
|
Das ist ja auch falsch.
das 1. ist binär, nicht BCD
das 2. ist HEX (oder halt BCD)
das DEC (10) ist nicht 58 sondern 88 = 0x58
| Einzig das 0x38 ist falsch, da müsste 0x3A (5810) stehen. Hab beim Abschreiben von Jornbyte offensichtlich nicht aufgepasst...
Ansonsten bleibe ich bei meiner Position. Das erste sollte BCD darstellen, da = 5810 gleich 0b0011 1010 wäre.
5 (0101) und 8 (1000) wiederum macht 0101 1000BCD.
Oder habe ich "16880958" = 1688095810 =0x0101953E (das Beispiel von oben) wieder falsch verstanden?
Wie gesagt finde ich ein Array of char mit 0-9-Codierung als HEX zu bezeichnen recht irreführend. Klar kann man zu allem HEX sagen und alles in einem Hex-Editor betrachten. Wenn da immer nur die Zeichen 0-9 auftauchen und kein A-F wäre das für mich ein Indiz für BCD und gegen das Hexadezimalsystem. Unter HEX würde ich immer das Hexadezimalsystem vermuten.
Wenn ich 5810 schreibe meine ich 5810. Oder von mir aus Fünfzig-acht, oder für ältere auch Achtundfünfzig.
War wie weiter unten meine Ausgangszahl, auch wenn sie in der Mitte steht.
###
Kann nicht widerstehen abschließend noch zwei Beispiele zu machen:
"58": 0101 1000BCD = 5810 = 0x3A = 0b0011 1010
"88": 1000 1000BCD = 8810 = 0x58 = 0b0101 1000
(Obwohl die fett markierten Zahlen in der Mitte der "Gleichung" stehen sind das meine Ausgangswerte.)
|
Zitat : Jornbyte hat am 7 Jan 2022 21:35 geschrieben :
| Bei dem Durcheinander bin ich raus.
|
Ich jetzt auch.
|
BID = 1092467
Murray Inventar
Beiträge: 4887
|
BCD ist ja eigentlich auch HEX, nur dass aus Definition das halt nur bis 9 geht.
Was will man da auch mit A-F, soll ja für den Menschen lesbar sein
Glaube die meisten Dekoder können aber auch die Buchstaben bis F auf den 7-Segment-Anzeigen darstellen.
Schon möglich dass nach Definition das halt kein HEX ist, ich habe das nie richtig gelernt und nur so nebenbei beigebracht.
Vor allen das C-Programmieren.
Gehe da bei vielem bestimmt Umwege was bedeutend leichter möglich ist.
Ich klicke ja oft nur fertige Bestandteile zusammen.
Habt jedenfalls viel geholfen, soweit erstmal alles ok
|
BID = 1092473
der mit den kurzen Armen Urgestein
Beiträge: 17434
|
Binär = Basis 2, Dezimal = Basis 10 , Hex = Basis 16 !
Oder um es für dich leichter verständlich zu machen. Wir haben 10 Finger und zählen deshalb Dezimal. Hätten wir 16 Finger würden wir Hex zählen und mit nur 2 Fingern Binär.
_________________
Tippfehler sind vom Umtausch ausgeschlossen.
Arbeiten an Verteilern gehören in fachkundige Hände!
Sei Dir immer bewusst, dass von Deiner Arbeit das Leben und die Gesundheit anderer abhängen!
|
BID = 1092498
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
der mit den kurzen Armen hat am 8 Jan 2022 13:01 geschrieben :
|
Binär = Basis 2, Dezimal = Basis 10 , Hex = Basis 16 !
Oder um es für dich leichter verständlich zu machen. Wir haben 10 Finger und zählen deshalb Dezimal. Hätten wir 16 Finger würden wir Hex zählen und mit nur 2 Fingern Binär.
|
...und dann ist, besonders bei den unixoiden noch das Oktalsystem in Gebrauch, bei dem immer 3 Bit zu einer Ziffer 0..7 zusammengefasst werden.
https://de.wikipedia.org/wiki/Oktalsystem
Beachtet, was dort zu den Konventionen steht, anhand derer die Maschine (Compiler etc) und auch der Mensch erkennt, wie eine Zahl zu interpretieren ist.
Um die Verwirrung komplett zu machen:
Auf den grossen Kisten wird auch noch mit gepackten und gezonten Dezimalzahlen gearbeitet: https://www.ibm.com/docs/en/i/7.4?topic=type-zoned-decimal-format
Und bei den Gleitkommazahlen wird es richtig chaotisch, denn da gibt es ausser IEEE-754 noch andere Darstellungen, die zu anderen (mysteriösen) Rundungsfehlern führen, selbst wenn man die Source hat.
Hab ich alles auf der Systemebene und Debugging längst hinter mir. Jetzt klick ich meistens auch nur noch etwas zusammen und freu mich, wenn plausible Ergebnisse rauskommen.
|
BID = 1092535
Murray Inventar
Beiträge: 4887
|
Wenn nur mal plausible Ergebnisse kommen würden.
Bis jetzt habe ich nur Nullen in der Datenbank.
Bin aber nun soweit dass auch eine Vorstufe zum Auslesen nicht mehr funktioniert.
Denke mal Hardwareproblem.
Morgen mal mit der Messtechnik drüber schauen.
|
BID = 1092561
Murray Inventar
Beiträge: 4887
|
Fress mir doch ein Storch ...
Hatte im Testaufbau in der Lochrasterplatine ein Widerstandsbein nicht verlötet.
Hat die ganze letzte Woche funktioniert und gerade zu Hause am WE nicht.
Und heute früh mit dem RS232/TTL-Wandler und Auslesetool vom Hersteller ging es und danach mit dem ESP32 wieder nicht.
3 Tage Fehler gesucht deswegen in der Software
[ Diese Nachricht wurde geändert von: Murray am 10 Jan 2022 14:43 ]
|