Verbindungsüberwachnung->show Message bei Fehler



  • Hallo,

    brauche einen guten Tip.

    Ich baue gerade eine Verbindungsüberwachung zwischen meinen Windows Programm und einen Controller.
    Der Controlller sendet immer im Sekundentakt ein Bit, es geht immer abwechselt von 0 auf 1,
    sobald das Bit auf 0 oder auf 1 länger als 2s ist, soll eine Meldung kommen.
    Habe es jetzt erstmal so gemacht.

    if (live==1)Timer6->Enabled=true; else Timer6->Enabled=false;
    if (live==0)Timer7->Enabled=true; else Timer7->Enabled=false;

    void __fastcall TForm1::Timer6Timer(TObject *Sender)
    {
    ShowMessage("Verbindung zum Controller unterbrochen!");
    }

    void __fastcall TForm1::Timer7Timer(TObject *Sender)
    {
    ShowMessage("Verbindung zum Controller unterbrochen!");
    }

    Es funktioniert, aber die Meldungen werden jetzt alle 2s ausgelöst, so dass bei einer Verbindungsunterbrechung nach etwas längere Zeit diverse Meldung quittiert werden müssen und das ist nicht so gut.

    Wer kann mir eine guten Tip geben?



  • Zum einen solltest Du nur einen einzigen Timer verwenden...
    Ansonsten solltest Du Dir merken, ob bereits die Fehlermeldung angezeigt wird, und wenn ja, diese nicht erneut ausgeben. Beim quittieren der Fehlermeldung durch den User setzt Du den Merker für die Fehleranzeige zurück.

    Grüße,

    Joe_M.



  • Kleine Frage:
    Kann die Verbindung auch von alleine wiederhergestellt werden? Ich mein das so, das du gerade mit ShowMessage mitgeteilt hast, das die Verbindung tot ist und kurze Zeit später gibts auf einmal doch wieder Daten. Wäre es dann nicht sinnvoll, die Meldungsbox automatisch auszubleneden?

    Für den Fall empfehle ich dir selber eine Dialogbox zu basteln, diese kannst du dann nämlich ohne zutun des benutzers wieder ausblenden, sollte die Verbindung wieder stehen. Und dann musst du dir auch keinen Merker setzen, sondern machst im Timer einfach folgendes:

    if(!MeineMeldungsBox->Visible) MeineMeldungsBox->Zeigen("Verbindung zum Controller unterbrochen!");
    


  • Die Verbindung kann auch alleine wieder kommmen. Ich probier mal mit deinen Beispiel, wäre auch gut, wenn sie sich selbst quittiert.

    Ich muss aber mehrere Meldung quittieren, nach z.B. 10s muss ich mehrere male den OK Button drücken !?



  • nach z.B. 10s muss ich mehrere male den OK Button drücken

    Willst du das so, oder soll das verhindert werden? Ich kann dir da grad nicht ganz folgen.... Naja, wenn du das jedenfalls so machst, wie von mir vorgeschlagen, mit dem eigenen Dialogfenster, dann wird dieses nur einmal angezeigt und du darfst/kannst/musst nur einmal auf OK drücken.



  • das da mehrere Meldungen kommen, kommt daher,
    wenn die Verbindung unterbrochen ist , ist der Speicher der Schnittstelle nicht immmer gleich, er ändert sich und daher kommt ein Signalwechsel.
    Hab da mal einige Bits ausgelesen, man kann sehen wie sich die Daten ändern.



  • klar es soll nur eine Meldung kommen.


Anmelden zum Antworten