Plattform nicht: Esp8266 und ArduinoFunktion uint16_t var 4 Plätze zu drucken
Ich versuche, ein uint16_t
in einer 4-char Stellen ausgegeben. Der Laser (VL53L0X) wird immer von 2 bis 4 Anzahl Stellen zu lesen.
Serial.print(mmLaser);
Werke, sondern kann die 4 Plätze nicht formatiert werden.
wenn ich die Funktion aufrufen, bekomme ich einen Fehler
**ERROR:** invalid conversion from 'char' to 'char*' [-fpermissive]
wenn ich ohne Aufruf der Funktion kompilieren: keine Fehler
Was mache ich falsch?
erklärt Vars
char c_temp;
uint16_t mmLaser = 0; // hold laser reading
Funktion genannt
uint16_2_char(mmLaser, c_temp);
Serial.print(c_temp);
Funktion
// Convert uint16_t to char*
// param 1 n - uint16_t Number
// param 2 c - char to return char value to
//
void uint16_2_char(uint16_t n, char* c){
sprintf(c, "%04d", (int) n);
}
passieren Was macht Ihr Compiler müssen über das Übergeben eines Char an eine Funktion erwartet ein 'char *'? – EOF
'char c_temp;' -> 'char c_temp [100];' Schätze ich vertraue nicht dem _never_ in "wird niemals über 4 Plätze gehen". Besser, die Größe des Puffers auf das Maximum zu bringen, das ein 'int' erzeugen würde. – chux
Ich finde mich seltsam befremdet, dass ich darauf hinweise, dass unsigned ints * keine Dezimalstellen * haben. Es hilft nicht, dass dies ein seltsames Puzzle einer Frage ist. Bitte lesen [fragen]. Nimm es zu Herzen. Stellen Sie eine [mcve] – Tibrogargan