hallo zusammen, ich versuche seit paar Tagen eine richtige Ausgabe in seriellen Monitor zu bekommen, aber klappt nicht.
normalerweise ich gebe zbs X10Y20Z100
angezeigt sollte : Az=10.00,Elv=20.00,Ach=100.00
hier ist mein Code:
float winkel_x,winkel_y,winkel_z;
char lineBuf[12];
void setup() {
Serial.begin(115200);
}
uint8_t receiveBuffer (float *winkel_x, float *winkel_y, float *winkel_z) ;
void loop() {
if (receiveBuffer(&winkel_x,&winkel_y,&winkel_z)){
snprintf(lineBuf,sizeof(lineBuf),"Az=%f,Elv=%f,Ach=%f",winkel_x,winkel_y,winkel_z);
Serial.println(lineBuf);
}
}
boolean serialTask(char *text, float *winkel_x, float *winkel_y, float *winkel_z) {
if(text== NULL) return false;
char* XVAR= strchr(text,'X');
char* YVAR= strchr(text,'Y');
char* ZVAR= strchr(text,'Z');
winkel_x[0]= atof(XVAR+1);
Serial.println(winkel_x[0]);
winkel_y[0]= atof(YVAR+1);
Serial.println(winkel_y[0]);
winkel_z[0]= atof(ZVAR+1);
Serial.println(winkel_z[0]);
return true;
}
uint8_t receiveBuffer (float *winkel_x, float *winkel_y, float *winkel_z) {
static char lineBuffer[12];
static uint8_t lineCnt=0;
char c;
uint8_t rt=0;
if( Serial.available() )
{
c = Serial.read();
if (c=='\n') // Auswaerten
{
serialTask(lineBuffer, winkel_x, winkel_y, winkel_z);
lineCnt=0;
lineBuffer[0]=0;
rt=1;
}
else if (c=='\r') ; // nix machen
else //sammeln
{
lineBuffer[lineCnt++]=c;
lineBuffer[lineCnt]=0;
}
}
return rt;
}
es ist leider falsch angezeigt ( so zeigt es: Az=?, Elv=?,)
Weisst jemanden vielleicht wo der Fehler ist ?
Danke im Voraus.