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.
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.