HI,
ich hab heute einiges ausprobiert. Mit umwandeln, einzelne Zeichen abfragen, zerschneiden mit strtok usw.
Leider hab ich es maximal geschafft, dass er die ersten Ziffern erkennt und dann abbricht ohne den Exponenten zu beurteilen. anstatt bei 150 hat er dann schon bei 1,5 abgebrochen.
Hier mal ein Beispiel eines Fehlversuchs:
Hab bestimmt wieder die Stringfunktionen falsch angewandt. Hab zwar u.a. auch auf http://www.c-howto.de/tutorial-stri....en-strtok.html nachgesehen, konnte für mich aber leider keine Lehren draus ziehen.Code:/*********************************************/ char fmaxstr []= "+1,500E+02"; //string 8.000 double fmax = strtod (fmaxstr, NULL); // turn string into floating point number char data [14]; char valueshort [14]; char value [14]; double valuecomp; char delimiter []= " "; for (;;) { uart_flush(); waitms (5); uart_puts(":72\r\n"); waitms (5); uart_gets(data, 14); // empfängt z.B. ",-1.500E+02 N" data[3] = ','; // aus . mach , data[1] = '+'; // Vorzeichen immer + (weil egal) strcpy (value, strtok(data, delimiter)); // zerschneiden strcpy (valueshort,value + 1); // ein KOMMA, das vor dem eigentlichen Wert gesendet wird, abtrennen valuecomp = strtod (valueshort, NULL); // Rest "+1,500E+02" in double umwandeln if (valuecomp >= fmax) { setportboff (0); uart_puts (":9,0\r\n"); sound (10,270); break; } else continue; /***********************************************/
Bitte sagt mir was ich falsch gemacht hab. Wär super, wenn mir jemand nen Vorschlag zu dieser Problematik machen könnte.
Danke







Zitieren

Lesezeichen