- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 19

Thema: Grundsatzfragen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Muss man drauf achten, was man tut.


    Habs jetzt mal so gemacht:

    Code:
    union xyzS{
                   uint8_t  byt[6];                //XYZ-Array: 3 Werte mit 16 Bit   
                   uint16_t val[3];
    }; 
    xyzS xyzSet;
    
    Zugriff:

    Code:
    f.read(xyzSet.byt,6);
    uint16_t ACX = xyzSet.val[0];
    uint16_t ACY = xyzSet.val[1];
    uint16_t ACZ = xyzSet.val[2];
    

    Geändert von Moppi (21.05.2019 um 04:20 Uhr) Grund: Änderung

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650

    Funktionen üerladen, C++

    Ich hatte das Problem, mit unterschiedlichen Aufrufparametern / Datentypen einer Funktion.

    Jetzt kann man eine neue Funktion erstellen, normalerweise mit neuem Namen.
    Jetzt hatte ich aber, aus weit zurückliegender Vergangenheit C++ Kurs, eine Eingebung, dass da was mit den Parametern war, insbesondere im Zusammenhang mit Methoden.

    In C geht das nicht, dass man eine Funktion gleich benennt. Aber C++ erlaubt das - habe kurz gesucht und nachgelesen.

    bool udp_send(char* string)
    {
    }


    bool udp_send(String string)
    {
    }

    C++ wählt, je nach Datentyp in den Übergabeparametern, die passende Funktion aus.



    Der eigentliche Grund dafür:

    mit ist noch unklar, wie ich in C++ einen String, Typs "String" in ein String, Typs "char" umwandle.
    Und ob das überhaupt geht.

    Müsste aber, habe was dazu gefunden: https://www.arduino.cc/reference/en/...s/tochararray/
    Allerdings wird da der gesamte String als Kopie im Speicher abgelegt. Vermutlich passiert das Kopieren zur Laufzeit.
    Das ist weniger gefällig.


    MfG
    Geändert von Moppi (21.05.2019 um 07:09 Uhr)

  3. #3
    HaWe
    Gast
    Zitat Zitat von Moppi Beitrag anzeigen
    Der eigentliche Grund dafür:

    mit ist noch unklar, wie ich in C++ einen String, Typs "String" in ein String, Typs "char" umwandle.
    Und ob das überhaupt geht.

    Müsste aber, habe was dazu gefunden: https://www.arduino.cc/reference/en/...s/tochararray/
    Allerdings wird da der gesamte String als Kopie im Speicher abgelegt. Vermutlich passiert das Kopieren zur Laufzeit.
    Das ist weniger gefällig.


    MfG


    ja, du brauchst hier immer 2 verschiedene Variablen, da beide unabhängige Datentypen sind und nichts miteinander zu tun haben:

    einen cstring von passender Größe

    char cbuf[100];

    und einen
    String mString;

    du kannst jetzt den Inhalt von String mString auf char cbuf[] kopieren:

    mString.toCharArray(cbuf, 100);

    Ist die Länge von mString kürzer als die vom cstring, wird in cstring hinter das letzte mString-Zeichen eine Null '\0' gesetzt (ich weiß allerdings jetzt grade nicht, ob der Rest ebenfalls mit '\0' aufgefüllt wird oder undefiniert bleibt).

    - - - Aktualisiert - - -

    PS,
    es gbt noch eine 2. String-Methode, die einen Pointer auf den "reinen cstring-Inhalt" von String zurückliefert:

    mString.c_str()

    Ich habe das noch nicht benutzt, aber ich verstehe das so, dass du dann (z.B. für temporäre Zwecke) keinen extra cstring Buffer brauchst, z.B. direkt zur Verwendung in anderen C Funktionen, so als wäre es bereits selber ein cstring array. Vermutlich arbeitet die Methode genau wie beim großen Bruder, der C++ std::string class:
    http://www.cplusplus.com/reference/string/string/c_str/

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Ja, c_str() funktioniert in Verbindung mit write().

    Gut!


    Gibt aber einen "const char*" Datentyp zurück?

    gibt dann so Meldungen dass von const char* nach char* ein Konvertierungsfehler auftritt.

    - - - Aktualisiert - - -

    c_str() gibt const char*

    Ja ist wohl so, habe es woanders gelesen.
    Geändert von Moppi (21.05.2019 um 12:08 Uhr)

Ähnliche Themen

  1. Wechsel von BASCOM zu GCC/Grundsatzfragen zu GCC
    Von stekohl im Forum C - Programmierung (GCC u.a.)
    Antworten: 8
    Letzter Beitrag: 10.12.2008, 23:13
  2. Grundsatzfragen zum LCD
    Von Goblin im Forum Elektronik
    Antworten: 12
    Letzter Beitrag: 02.02.2006, 21:16
  3. Probleme mit Counter ! Grundsatzfragen
    Von Roberto im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 15.01.2006, 23:38

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress