Frage zu Serial.print <> Serial.println und Fenster löschen

Vielleicht suchst du mcurses

Hallo zusammen,
vielen Dank, hat wie immer sehr geholfen.

Ich habe aber noch eine Frage.
Die ESC Squenzen vertragen wohl nur "char". Ist das so richtig programmiert?

char* temp; global deklariert

Aufruf
 temp = convert_integer_to_char(1234);

...

free(buf);
 
Funktion:

char* convert_integer_to_char(int value) {

      char * buf = (char*) malloc(6);

      dtostrf(value, buf, 19);

return buf;

"buf" wird zwar am Ende der Ausgabe wieder freigegeben, aber es kommt mir riskant vor, da sich der Speicher ja innerhalb meiner Ausgabe aufbaut. Und den Effekt, wenn ich ihn nicht regelmäßig freigebe, habe ich gesehen.
Oder wäre es geschickter, wennich ihn nach jeder Augabe wieder freigebe.

        settext(ESC_FG_BLACK,ESC_BG_CYAN,ESC_CURSOR_POS(13, 30), "   Pitch - Motor 1   ");
        temp = convert_integer_to_char(1234);

        free(buf);

	settext(ESC_FG_BLACK,ESC_BG_CYAN,ESC_CURSOR_POS(13, 51), temp);   

       settext(ESC_FG_BLACK,ESC_BG_CYAN,ESC_CURSOR_POS(14, 30), "   Pitch - Motor 2   ");
        temp = convert_integer_to_char(1234);

        free(buf);

	settext(ESC_FG_BLACK,ESC_BG_CYAN,ESC_CURSOR_POS(15, 51), temp);   

usw.

Gruß
Willi

Mein Tipp: Lass das mit der dynamischen Speicherverwaltung.

Die ganzen C/C++ StringFunktionen bekommen einen Buffer übergeben.
Warum willst du von diesem bewährtem Prinzip abweichen?
:o Noch nicht genug Probleme in deinem Leben? :o

Hallo,
Ich habe es aber anders nicht hin bekommen. Wärst du so gut und würdest mir hier weiter helfen, mit ein paar codezeilen. :confused:
Probleme im Leben, nein.
Im Hobby ja :slight_smile:

Als Kontrollausgabe seriell oder sogar per udp ist serialcominstruments hervorragend geeignet.

Nimm die 4er Version aus dem Downloadbereich

Hast du dir ncurses schon angesehen?
Oder einfach wohlwollend drüber weg gesehen?

void aufgerufende(char*buffer, float millimeter)
{
   float dezimeter = millimeter/100;
   dtostrf(dezimeter, 8, 2, buffer);
}


void aufrufende()
{
  char buffer[40] = "";
  aufgerufende(buffer,3720);
  Serial.print(buffer);
}


void setup() 
{
  Serial.begin(9600);
  aufrufende();
}


void loop() 
{
  
  
}

float centimeter = millimeter/100;

Pseudocode :wink:

Nö habe ich nicht.!!! Hatte aber gemeint, es ginge fort nur um die ESC Sequenzen. Ich lese immer eure Vorschläge, aber manchmal erkenne ich es nicht.
Vielen vielen Dank.

Konnte jetzt erst Deine Zeilen komplett lesen. Auf dem Handy habe ich es übersehen. Ich wollte einen Rückgabewert von typ char haben.
Was Du mir gesendet hast kannte ich natürlich schon.
Ich werde mir aber die mcurses Lib mal genauer ansehen.

Auch der Tip von ElEspanol klingt interessant.

Ich hab´ noch viel zu lernen, aber in 156 Tagen habe ich mehr Zeit.

Du kannst

KUCKY:
Ich wollte einen Rückgabewert von typ char haben.

Dann mach das. Die ganzen Standard C Funktionen mach das auch so:

char* func(char* buffer)
{
   ....


   return buffer;
}

Du kannst ruhig einen Zeiger auf den Puffer zurückgeben der als Parameter übergeben wurde

ElEspanol:
Pseudocode :wink:

Korrigiert.

Ich wollte einen Rückgabewert von typ char haben.

Du nimmst Krümelkackern wie mir den Wind aus den Backen, wenn du zwischencharundchar*  unterscheidest und richtig verwendest. Auch der Compiler ist recht pingelig, was den Unterschied angeht.
Serenifly's Beispiel-Funktion liefert einen char*.

Ach, so ein Sternchen...
Soviel macht das doch sicherlich nicht aus.
Das ist doch soooo klein...
:grin:

Zum Grundthema: Falls es noch keiner gemerkt haben sollte: Die 1.8.3-IDE hat einen Clear Button für den Seriellen Monitor.
Nur mal so am Rande :wink:

Bin ich jetzt Spielverderber? Sie ESC -Sequenzen waren aber interessant.

Gruß Tommy

Hallo zusammen,
vielen Dank für euer Interesse. Hat ja auch bei euch einigen Diskussionsstoff erzeugt. Habe wieder was über „char“ und ESC-Sequenzen gelernt, wobei „char“ bei mir aber immer ein leidiges Thema ist.
Interessant ist aber, wie man in einem solchen Forum an Informationen kommt, die man zuerst gar nicht wollte. Ich wollte das Rad nicht neu erfinden, sondern eine Anzeigemöglichkeit meiner Quadrocopter Parameter. ESC-Sequenzen habe ich bei Jurs gelesen und dann kommt ElEspanol daher und verweist auf ein fertiges Tool. Wie soll einer wie ich darauf kommen? Danke ElEspanol.
Ich habe es gestern Abend sofort ausprobiert, und bin begeistert. Sehr einfach zu verstehen und anzuwenden. Habe es zuerst mit der von ElEspanol empfohlenen V4 probiert und dann eine neuerer v.046. Die erste gefiel mir besser, habe aber noch den ganzen Verlauf im Microcontrollernet gelesen. Schade, dass es hier kein PID Instrument gibt und bei 0.46 nur ein PID Instrument. Aber mir reicht das erst einmal.
Allen vielen Dank, bis zu nächsten mal.
Willi

Es würde helfen wenn du aufhörst zu denken "Ich habe ein Problem mit char" oder ähnliches. char ist nur ein vorzeichenbehaftetes Byte. Das muss nicht etwas mit C Strings zu tun haben. Das könnte auch eine Zahl sein. Bei C Strings kommen dann Zeiger hinzu und dann liegt das Problem ganz wo anders.

Stimmt, muss ich mir merken. Danke nochmals.