sr234
27.09.2010, 13:30
Hallo,
bin noch nicht besonders sicher auf dem Gebiet der C Programmierung und auch neu in diesem Forum.
Sitze momentan an einer kleinen Automatisierung.
Ein Motor soll angesteuert werden, bis ein Messgerät einen Schwellenwert erreicht/überschritten hat.
Hierfür benutze ich das RN-Control 1.4 board mit dem ATmega32 (GCC compiler).
Das Messgerät ist über UART (8N1, nicht Interrupt gesteuert) verbunden und schickt den Wert als einen String: z.B. "-1.567E+01 N"
Mein Problem ist nun der Vergleich des Strings mit dem Schwellenwert.
Momentan benutze ich den strcomp() Befehl, das Problem ist nur, dass er natürlich den Motor abschaltet, sobald ein character des Strings einem charakter des Schwellenwert entspricht (Vorzeichen reicht da ja), daher hab ich erst mal den string mit strtok() von Vorzeichen und N getrennt.
char fmax [] = "1.500E+01";
char data [12];
char *value;
char delimiter [] = "+-N ";
...
for (;;)
{
uart_puts(":72\r\n"); //Wert anfordern
uart_gets(data, 12); //Wert empfangen
value = strtok(data, delimiter); //von Vorzeichen, N trennen
if(strcmp(value, fmax) != 1) //vergleichen
{ setportboff (0); //Motor aus
uart_puts (":9,0\r\n"); //Messzyklus beenden
sound (10,270);
break;
}
else continue;*/
}
Ich hatte auch daran gedacht den übrig gebliebenen string in ein double zu wandeln und dann die Werte als double zu vergleichen. Wäre das sinnvoll?
Meine Fragen:
Taugt das Programm was?
Irgendwelche alternativen um die Werte zu vergleichen?
Ich wäre über jede Hilfe dankbar,
Gruß Steffi
Vergessen:
Wenn ich das Programm laufen lasse, steigt er entweder sofort aus dem Programm aus oder garnicht (auch wenn der Schwellenwert eigentlich schon erreicht ist)
bin noch nicht besonders sicher auf dem Gebiet der C Programmierung und auch neu in diesem Forum.
Sitze momentan an einer kleinen Automatisierung.
Ein Motor soll angesteuert werden, bis ein Messgerät einen Schwellenwert erreicht/überschritten hat.
Hierfür benutze ich das RN-Control 1.4 board mit dem ATmega32 (GCC compiler).
Das Messgerät ist über UART (8N1, nicht Interrupt gesteuert) verbunden und schickt den Wert als einen String: z.B. "-1.567E+01 N"
Mein Problem ist nun der Vergleich des Strings mit dem Schwellenwert.
Momentan benutze ich den strcomp() Befehl, das Problem ist nur, dass er natürlich den Motor abschaltet, sobald ein character des Strings einem charakter des Schwellenwert entspricht (Vorzeichen reicht da ja), daher hab ich erst mal den string mit strtok() von Vorzeichen und N getrennt.
char fmax [] = "1.500E+01";
char data [12];
char *value;
char delimiter [] = "+-N ";
...
for (;;)
{
uart_puts(":72\r\n"); //Wert anfordern
uart_gets(data, 12); //Wert empfangen
value = strtok(data, delimiter); //von Vorzeichen, N trennen
if(strcmp(value, fmax) != 1) //vergleichen
{ setportboff (0); //Motor aus
uart_puts (":9,0\r\n"); //Messzyklus beenden
sound (10,270);
break;
}
else continue;*/
}
Ich hatte auch daran gedacht den übrig gebliebenen string in ein double zu wandeln und dann die Werte als double zu vergleichen. Wäre das sinnvoll?
Meine Fragen:
Taugt das Programm was?
Irgendwelche alternativen um die Werte zu vergleichen?
Ich wäre über jede Hilfe dankbar,
Gruß Steffi
Vergessen:
Wenn ich das Programm laufen lasse, steigt er entweder sofort aus dem Programm aus oder garnicht (auch wenn der Schwellenwert eigentlich schon erreicht ist)