Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Off Topic
    4. Probleme mit Atof und Strings

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Probleme mit Atof und Strings

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      Mystisch last edited by Mystisch

      Hey Leute, vl hat jemand hier eine Idee, habe Probleme mit meinem LoraBoard von Heltec imArdunio SDK .

      Ich schicke einen String wie "valueWaMa=614,1060.13,243.83#3.889#"
      und teile diesen. die nummer in den ## möchte ich als zu double wandeln.

      void empfang(){
      (....)
      memcpy(rxpacket, payload, size );
          rxpacket[size]='\0';
          char* eventData = strtok(rxpacket, "#");
          char* packets = strtok(NULL, "#");
          double valP = atof(packets);
          Serial.printf("p %s\r\n",packets);
      (...)
      }
      

      bringt mir die ausgabe "p 3.889"

       Serial.printf("p %f\r\n",valP);
      

      stoppt das Programm.

      Ich sehe das problem nicht, da atoi funktioniert.
      Kann hier einer helfen?

      Asgothian 1 Reply Last reply Reply Quote 0
      • Asgothian
        Asgothian Developer @Mystisch last edited by

        @mystisch

        • wie stoppt das Programm ?
        • Gibt es Meldungen ?
        • Wenn ja, welche ?
        • was passiert wenn du die Zeile
        char* packets = strtok(NULL, "#");
        

        umstellst in

        char* packets = strtok(eventData, "#");
        

        A.

        M 1 Reply Last reply Reply Quote 0
        • M
          Mystisch @Asgothian last edited by

          @asgothian
          die Ausführung der funktion Empfang wird nicht weiter ausgeführt, traces vor atof werden noch ausgeführt, danach kommt nichts mehr.
          nach weiterem tests, traces aus dem hauptprogramm kommen.
          wenn ich die variable packets global definiere und die atof funktion im hauptprogram ausführe, läuft es wie gewünscht.
          Jetzt bin ich maximal verwirrt.

          in eventData ist der string ja schon getrennt, daher würde eine Umstellung nichts bringen.
          In der Variable packets steht schon der richtige Inhalt drin, das zeigt ja die ursprüngliche Ausgabe von

          Serial.printf("p %s\r\n",packets);
          

          nur wenn ich diese zeile nach

          Serial.printf("p %f\r\n",valP); 
          

          ändere, gehts in die Hose.

          Codierknecht 1 Reply Last reply Reply Quote 0
          • Codierknecht
            Codierknecht Developer Most Active @Mystisch last edited by

            @mystisch sagte in Probleme mit Atof und Strings:

            Serial.printf("p %f\r\n",valP);

            Wie sieht's denn aus, wenn Du einmal das

            Serial.printf("p %s\r\n",valP);
            

            ausführst und einmal das

            Serial.printf("p %f\r\n",'3.889');
            

            Also zuerst prüfen, ob in valP auch das erwartete Ergebnis steht und dann testen, ob er den string auch korrekt konvertiert.
            Hast Du vielleicht ein Problem mit dem Format (Ländereinstellungen)?

            Serial.printf("p %f\r\n",'3,889');
            
            M 1 Reply Last reply Reply Quote 0
            • M
              Mystisch @Codierknecht last edited by

              @codierknecht
              wie geschrieben, die packets global definiert, in der Empfangen funktion den String geteilt und atof im hauptprogram konvertieren lassen, kam wie gewünscht der korrekte Double Wert bei raus.
              In der Funktion klappts nicht.

              Ja ich hatte auch versucht, die variable valP in der Funktion Empfangen als String anzuzeigen, kam nichts vernünftiges dabei raus. Ausgabe "UU" gefolgt von wechselnden Zeichen, als würde Atof nicht den richtigen Speicherbereich auslesen.

              Das fixe vorgeben einer Zahl im printf wurde ebenfalls korrekt angezeigt.

              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              472
              Online

              32.0k
              Users

              80.5k
              Topics

              1.3m
              Posts

              3
              5
              312
              Loading More Posts
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes
              Reply
              • Reply as topic
              Log in to reply
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
              The ioBroker Community 2014-2023
              logo