Mit PIC Tasten einlesen in Interrupt, Wiederholung schlägt fehl

OP #1659672
Lesenswert?
• ▲
▼
Hallo Forenkollegen!

Ich laboriere nun bereits seit geraumer Zeit an folgendem Problem:

Dieser Code wird beim Auftreten eines seriellen Interrupts abgearbeitet:
1
void EingehenderAnruf(){
2
  strcpy(Vergleichstring,"HFP");              //Format, das bei Anfrage gesendet wird: HFP 0 CALLERID "+436642734111" "" 80   
3
if(strstr(Module_Answer,Vergleichstring)!= NULL){    //Durchsuchen der Modulantwort nach 'HFP'
4
    strcpy(Vergleichstring,"CALLERID");            //nächste signifikante Zeichenkette für einen Anruf                
5
    if(strstr(Module_Answer,Vergleichstring)!= NULL){  //Durchsuchen der Modulantwort nach 'CALLERID'
6
      strcpy(Statusausgabe,"Eingehender Anruf");
7
      display_str(Statusausgabe);
8
      setcursor(13);
9
      Tastenwarten=1;
10
      delay_ms(2000);
11
      clear();
12
      do {
13
        if(input(dtaste6)){            //B2 - Denial
14
          Tastenwarten=0;            //Eingabe bereits erfolgt
15
          printf("hangup");
16
          putchar(13);      
17
          strcpy(Statusausgabe,"Anruf       abgewiesen");
18
          clear();
19
          display_str(Statusausgabe);      //Ausgabe Denial
20
          setcursor(13);
21
          delay_ms(2000);
22
          clear();
23
        }
24
        if(input(dtaste7)){            //B3 - Accept
25
          Tastenwarten=0;            //Eingabe bereits erfolgt
26
          printf("answer");
27
          putchar(13);      
28
          strcpy(Statusausgabe,"Anruf       angenommen");
29
          clear();
30
          display_str(Statusausgabe);      //Ausgabe Accept
31
          setcursor(13);
32
          delay_ms(2000);
33
          clear();
34
        }
35
      } while(Tastenwarten==1);            //Warten auf Benutzereingabe
36
    }
37
  }            
38
}
Wenn ich nun angerufen werde funktioniert das ganze einmal. Also kann 
ich auflegen oder abheben. Bei einem erneuten Anruf (nach Beendigung des 
vorherigen) wird allerdings die ganze Funktion nicht mehr ausgeführt. 
Wenn ich die do-while Schleife entferne dann funktioniert das ganze 
allerdings prächtig vom Ablauf her, nur kann ich dann eben nicht 
auflegen oder abheben.

Das ganze funktioniert über das BT-Modul WT32, dieses sendet jedes Mal 
den gleichen String (bereits überprüft).

Ich würde mit wünschen, dass ich bei jedem Anruf abheben oder auflegen 
kann und die Schleife keine Probleme mehr macht. Hat jemand von Euch 
eine Idee?

Mit freundlichen Grüßen
Andreas

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.