Liebes Forum,
Ich lese einen einen Wert meines NDisplays in ein Array vom Typ Char ein.
zuerst kommen 4 Ident Bytes(DWord) und dann noch 4 im HEX Format.
z.B. 15 00 00 00 C0 57 01 00
Ich habe z.B. A[4] = C0 ... A[7] = 00
Wie stelle ich es an daraus wieder die Zahl 88000 zu machen ( auch negative Werte ) - in Excel ist es mir klar aber giebt es eine
fertige Routine/Funktion für Arduino ?
Ich bin wirklich dankbar für Hilfe.
88'000(DEZ)
entspricht ziemlich genau
0x 00 01 57 C0
Diese 4 Byte liest Du als int32_t in little Endian ein - fertig.
Alternativ - macht das Gleiche
int32_t Alt-Zahl=0
for{byte t=0;t<4;t++){
AltZahl=AltZahl+(inputbyte[t]<<(8*t));
}
Zahl auf Null, dann pro Byte Zahl Mal 256 (um 1 Byte/8 Bit verschieben) und das 'neue' Byte addieren.
Das machst Du 4 Mal - fertig.
Ungetestet
MfG
Ich habe es getestet und es hat funktioniert. Danke nochmals.
Nachdem ich den Osterurlaub relativ unproduktiv damit verbracht habe mich für meine Move-Stop-Move Camslideranwendung durch nicht funktionierende Beispiele zu Nextion library(s) gekämpft habe, will ich die serielle Kommunikation zwischen NodeMCU und NDisplay ohne Bibliotheken abhandeln.
Das Senden von Werten ans Display ist einfach, aber wie die Eingaben von Start/Endpos,Steps,Shots usw. vom Display als Dec Werte empfangen werden wurde nicht beschrieben.
Kannst Du das nochmal in klaren Sätzen beschreiben, wo Dein Problem liegt?
Gruß Tommy
postmaster-ino's Routine hat mein Problem wie ich einen vom Nextion über ein Touch-Buttonereignis an meinen NodeMCU ( oder Arduino ) gesendetes Hexadezimalcharakter-Array wieder in einen long Typ zum rechnen im Arduino umwandle gelöst.
Ich als "Silversurfer" ohne Bit/Byteschubser Kenntnisse hätte das nie hinbekommen.
Also zusammengefasst aus auf dem Display eingegebener oder errechneter Zahl ( sehr groß und mit Vorzeichen) durch ser.Übertragung zum Host wieder eine Zahl zum rechnen ( für mich ) und Steuerung meines Schrittmotors machen.