Die Funktion read() (auf ein serial device) blockiert mir im falle, wenn keine Daten zum lesen verfügbar sind ca 750 millisekunden. Gibt es eine möglichkeit, wie ich die Funktion dazu bringen kann nach 100 millisekunden zu retournieren wenn keine Daten zum lesen vorhanden sind?
MFG
read() Zeitproblem
=D nun ja, wenn daraus (prototyp) irgendwann mal n stück code werden sollte das sich in einem embedded systems zurechtfindet dann schon. Dort wird natürlich die zeitspanne im mikrosekundenbereich sein da hast du recht.
Und trozdem ist es ein probelm, wie du sehen wirst, da ich die schnittstelle nicht nonblocking haben will....
Und trozdem ist es ein probelm, wie du sehen wirst, da ich die schnittstelle nicht nonblocking haben will....
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi gorba!gorba hat geschrieben:Gibt es eine möglichkeit, wie ich die Funktion dazu bringen kann nach 100 millisekunden zu retournieren wenn keine Daten zum lesen vorhanden sind?
Vielleicht, aber wirklich nur vielleicht -- kannst du damit etwas anfangen:
http://docs.python.org/lib/module-select.html
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
wusst ichs doch. Meine Lieblingsfunktion.. hehe
In c hab ich mich einen Tag mit der Funktion rumgeschlagen, bis mir klar wurde, dass die select funktion auf nem bestimmten kernel nicht navollziehbare Ergebnisse liefert.
Unter Windows funktioniert das Ding leider nur auf Sockets.
Trozdem danke
In c hab ich mich einen Tag mit der Funktion rumgeschlagen, bis mir klar wurde, dass die select funktion auf nem bestimmten kernel nicht navollziehbare Ergebnisse liefert.
Unter Windows funktioniert das Ding leider nur auf Sockets.
Trozdem danke
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Gorba!gorba hat geschrieben:Unter Windows funktioniert das Ding leider nur auf Sockets.
Das war mir klar, aber du hast keine genaue Angabe über das Betriebssystem gemacht.
So, und jetzt zu einer anderen Möglichkeit, die mir eingefallen ist:
- Ein Thread, der auf das serielle Signal wartet und die empfangenen Signale in eine Queue schreibt.
- Ein anderer Thread, der alle 50 ms nachsieht, ob es ein neues Signal in der Queue gibt, dieses ausliest und anzeigt.
Somit blockiert der erste Thread den anzeigenden Thread nicht.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.