SOLUCIONADO extraer solo numeros de cadena de datos serial

Compañeros cada vez que presiono la tecla "D" en un teclado matricial capturo un dato de una cadena continua de datos seriales, la cual la separa un salto de linea, como puedo hacer para extraer solo los numeros incluyendo el punto de la cadena recibida.

La cadena que capturo al presionar el botón, es la siguiente, NT,GS 40.00 KG..solodeberia capturar 40.00.

String CapturaCadena;


void loop() {

    if(Serial.available()> 0){                     // Si hay algo en el puerto serial
  CapturaCadena = Serial.readStringUntil('\n');    //Guardamos el dato en un string
  }

 pulsacion = Teclado1.getKey();
  
  
switch (pulsacion) {

case '#':                       //Si se presiona #
  delay(30);
  Serial.println(CapturaCadena); //capturo el dato

  break;

}
}

park:
La cadena que capturo al presionar el botón, es la siguiente, NT,GS 40.00 KG…solodeberia capturar 40.00.

El “formato” de la cadena es constante? Quiero decir: siempre empieza exactamente con "NT,GS "?

No compañero, no siempre es constante, aveces es ST o GS

Bueno creo que no di la pregunta correcta; la redefiniré:

El primer dígito siempre estará en la misma posición de la cadena? (a eso me refería yo con "formato constante") En tu ejemplo, el texto es así:

NT,GS 40.00 KG

Contando posiciones sería:

NT,GS 40.00 KG 012345678901

Visualizándolo de esta manera, ahora la pregunta sería:

El número siempre empezaría en la posición 7 y acabaría en el 11?

Empesaria en la posicion 7 pero no trminaria siempre en la posicion 11 ya que el numero podria ser de 0 hasta 100 000.00 o mas, y eso varia la posicion del digito final

Asumiendo que la cadena de caracteres siempre va a terminar en "KG", esta función debería servir:

String extraerNumero(String entrada) {
  byte posFinal = 8;
  char caracter;
  while (1) {
    caracter = entrada.charAt(posFinal);
    if (!isDigit(caracter) && !isPunct(caracter)) { // Si no es ni dígito ni signo de puntuación.
      // Suponiendo que la candena siempre acaba en "KG"; al llegar a la 'K', se termina la función.

      return entrada.substring(7, posFinal - 1); // Si no se le resta 1, se va la 'K' junto a la subcadena extraida.
    }
    posFinal++;
  }
}

Nótese que devuelve otro objeto String, así que no esperes hacer algo como:

int valor = extraerNumero(CapturaCadena);

Si más bien esa era la idea, solo habría que hacer unas ligeras modificaciones al código propuesto.

Muchas gracias compañero , me sirvio el codigo...ah tambien resolvi el mismo problema con este codigo..

 if(Serial.available()> 0){                     // Si hay algo en el puerto serial
 // CapturaCadena = Serial.readStringUntil('\n');    //Guardamos el dato en un string

 char inChar = Serial.read();
    if (isDigit(inChar) || inChar == '.') { //comparo que solo sean digitos
      inString += inChar;
    }
    if (inChar == '\n') { 
     // Serial.print("Peso, ");
      //Serial.println(inString.toFloat());
      numero = (inString.toFloat());
      // Borrar string
      inString = "";
      Serial.flush();
    }
  }