Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Zeitlich limitierter Funktionsaufruf

  1. #1
    Registrierter Benutzer
    Registriert seit
    23.03.2008
    Beiträge
    50

    Zeitlich limitierter Funktionsaufruf

    Hallo,

    schon wieder eine Frage: Ich möchte gerne einen Funktionsaufruf prinzipiell zeitlich limitieren. Konkret handelt es sich dabei die Funktionen read(...) und write(...) aus QextSerialPort.

    Der Grund: Das Programm soll Geräte steuern, und wenn ein Gerät nicht antwortet, soll z.B. der Magnet nicht mit voller Leistung weiterlaufen bis jemand das Programm manuell abbricht. Ich habe leider nicht herausgefunden, ob die genannten Funktionen sowieso nur einen Versuch unternehmen und, falls das Gerät nicht erreichbar ist, eine Fehlermeldung zurückgeben und das Programm weiterlaufen lassen.

  2. #2
    Registrierter Benutzer
    Registriert seit
    24.06.2004
    Beiträge
    101
    In etwa so?

    Code:
    // Dauer des Durchlaufs
    #define DURATION 10
    
    // Variablen
    time_t begin;
    
    // Startzeit festlegen
    begin = time();
    
    while( DURATION > time() - begin )
    {
        read( ... );
        write( ... );
    }
    
    fprintf( stdout, "abgelaufen" );
    Der Code geht natürlich davon aus, das read() nonblocking ist.

  3. #3
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Wenn du das Signal readyRead() benutzt, um das Lesen zu starten und mit bytesAvailable() das derzeitige Maximum ermittelst, sollte read() schonmal nicht blockieren.

    write() puffert normalerweise, eventuell kann man mit einem eigenen Zusatzpuffer und bytesWritten() arbeiten, wenn der interne Puffer zu schnell voll wird.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  4. #4
    Registrierter Benutzer
    Registriert seit
    23.03.2008
    Beiträge
    50
    Danke für die schnelle Antwort. Das war sehr hilfreich. Habe jetzt vor jedes read() ein waitForReadReady() gesetzt.

  5. #5
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Damit blockierst du dann aber, ich dachte du möchtest genau das verhindern?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •