Bremsenreiniger
11.01.2015, 19:30
Hallo,
ich habe ein Problem mit dem UART. Ich benutze die lib von Peter Fleury. Der MC bekommt von einm VB Programm(oder Terminal) Start und Endbefehl
und soll command füllen. Allerdings hängt er sich auf sobald er die while Schleife verlässt, also wenn die 254 gesendet wird. Manchmal funktioniert es ein, zweimal aber meistens gibt er direkt den Geist auf und macht was er will. Setzte ich jedoch delays von 5ms in die while Schleife läuft es(was das Problem ja nicht beseitigt)
Hier die Code Stelle:
ci = 0;
c = uart_getc();
if( c != UART_NO_DATA && c == 250){
//Startbedingung für alle Eingehenden Daten,
//wenn 250 gesendet wird und Daten vorhanden
while( c != 254 ){
// Lese solange, bis von der anderen Seite 254 als Endbedingung kommt!
c = uart_getc();
if(c != UART_NO_DATA) {
command[ci++] = c;
//_delay_ms(5);
uart_putc(c); // überprüfen am terminal
//_delay_ms(5);
}
}
command[ci] = '\0';
}
Weiß einer wo der Fehler liegen könnte?
ich habe ein Problem mit dem UART. Ich benutze die lib von Peter Fleury. Der MC bekommt von einm VB Programm(oder Terminal) Start und Endbefehl
und soll command füllen. Allerdings hängt er sich auf sobald er die while Schleife verlässt, also wenn die 254 gesendet wird. Manchmal funktioniert es ein, zweimal aber meistens gibt er direkt den Geist auf und macht was er will. Setzte ich jedoch delays von 5ms in die while Schleife läuft es(was das Problem ja nicht beseitigt)
Hier die Code Stelle:
ci = 0;
c = uart_getc();
if( c != UART_NO_DATA && c == 250){
//Startbedingung für alle Eingehenden Daten,
//wenn 250 gesendet wird und Daten vorhanden
while( c != 254 ){
// Lese solange, bis von der anderen Seite 254 als Endbedingung kommt!
c = uart_getc();
if(c != UART_NO_DATA) {
command[ci++] = c;
//_delay_ms(5);
uart_putc(c); // überprüfen am terminal
//_delay_ms(5);
}
}
command[ci] = '\0';
}
Weiß einer wo der Fehler liegen könnte?