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:
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;
/***********************************************/
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.
Bitte sagt mir was ich falsch gemacht hab. Wär super, wenn mir jemand nen Vorschlag zu dieser Problematik machen könnte.
Danke
Lesezeichen