Verwenden von QSocketNotifier zum Auswählen auf einem Char-Gerät.

7

Ich habe einen Char-Gerätetreiber geschrieben und schreibe jetzt einen QT-Wrapper, dessen Teil es ist, ein Signal zum Feuern zu bekommen, wenn das Gerät über den Poll-Mechanismus lesbar wird. Ich hatte versucht zu tun:

%Vor%

Aber readyRead wurde nie aufgerufen, und mein Treiber hat nie berichtet, dass seine Abrufmethode aufgerufen wurde.

Ich konnte den folgenden Code erhalten, damit ich weiß, dass mein Treiber funktioniert

%Vor%

Dies wartet ordnungsgemäß darauf, dass mein Treiber wake_up aufruft, und ich kann zwei Abfrageaufrufe von meinem Treiber sehen. Eine für die anfängliche Poll-Registrierung und eine für den Zeitpunkt, an dem der Wake_up passiert.

Wenn ich es so gemacht hätte, müsste ich wahrscheinlich einen separaten Thread erzeugen, den es nur auf diesem Gerät abfragen und ein Signal und eine Schleife werfen würde.

Ist es möglich, QSocketNotifier auf diese Weise zu verwenden? Die Dokumentation von QFile :: handle () scheint darauf hinzuweisen, dass es sein sollte.

    
jjcf89 29.07.2011, 20:13
quelle

2 Antworten

8

Dein QSocketNotifer wird zerstört, sobald dieser if Block endet. Es hat keine Chance, irgendetwas zu melden.

Sie müssen diesen Socketbenachrichtiger so lange am Leben halten, wie diese Datei überwacht werden soll. Der einfachste Weg, dies zu tun, ist wahrscheinlich ein QSocketNotifer* Mitglied in einer Ihrer Klassen zu halten.

    
Mat 31.07.2011, 12:40
quelle
14

Ich werde auch erwähnen, dass QSocketNotifier verwendet werden kann, um Stdin mit dem folgenden

zu sehen %Vor%

--- Kopfzeile

%Vor%     
jjcf89 12.09.2011 14:40
quelle

Tags und Links