Lesen vom seriellen Port mit Qextserialport & WinAPI
Verfasst: 17. Juli 2008 12:26
Hi,
für das arbeiten an der RS232 Schnittstelle, habe ich mich für die Qextserialport Klasse entschieden.
Mir ist aufgefallen, dass diese Klasse für das Lesen der Daten von der Schnittstelle doch nicht geeignet ist.
Es wird kein Signal emittiert, dass Daten angekommen sind.(readyRead)
Daher kam mir die Idee mit dem Polling, welches aber auch nicht die sauberste Lösung ist. (Starte in einem seperaten Thread das Polling, alle ~10 µs oder so ähnlich)
Die letzte Idee, die ich hatte ist das direkte zugreifen auf die WinAPI (SetCommMask & WaitCommEvent).
Ich habe mir überlegt eine extra (Thread) Klasse zu schreiben, die über die WinAPI auf der Leitung lauscht und falls was passiert meine andere (reine QT) Klasse informiert.
So spare ich mir das dauerhafte Polling.
Was haltet ihr davon?
Bei einer Portierung auf Linux würde ich natürlich das Modul auswechseln usw....
Wo ich mir noch nicht sicher bin ist folgendes:
Die (QT) Klasse soll schreiben und lesen ( mit der Hilfe der API-Klasse).
Die QT-Klasse öffnet das Gerät als ReadWrite und gleichzeitig müsste meine API-Hilfsklasse das Gerät auch zum lesen öffnen können um auf das Event zu lauschen.
Geht das ?
Oder habt ihr eventuell noch eine andere Idee?
für das arbeiten an der RS232 Schnittstelle, habe ich mich für die Qextserialport Klasse entschieden.
Mir ist aufgefallen, dass diese Klasse für das Lesen der Daten von der Schnittstelle doch nicht geeignet ist.
Es wird kein Signal emittiert, dass Daten angekommen sind.(readyRead)
Daher kam mir die Idee mit dem Polling, welches aber auch nicht die sauberste Lösung ist. (Starte in einem seperaten Thread das Polling, alle ~10 µs oder so ähnlich)
Die letzte Idee, die ich hatte ist das direkte zugreifen auf die WinAPI (SetCommMask & WaitCommEvent).
Ich habe mir überlegt eine extra (Thread) Klasse zu schreiben, die über die WinAPI auf der Leitung lauscht und falls was passiert meine andere (reine QT) Klasse informiert.
So spare ich mir das dauerhafte Polling.
Was haltet ihr davon?
Bei einer Portierung auf Linux würde ich natürlich das Modul auswechseln usw....
Wo ich mir noch nicht sicher bin ist folgendes:
Die (QT) Klasse soll schreiben und lesen ( mit der Hilfe der API-Klasse).
Die QT-Klasse öffnet das Gerät als ReadWrite und gleichzeitig müsste meine API-Hilfsklasse das Gerät auch zum lesen öffnen können um auf das Event zu lauschen.
Geht das ?
Oder habt ihr eventuell noch eine andere Idee?