Seite 1 von 1

read() Zeitproblem

Verfasst: Mittwoch 16. August 2006, 15:49
von gorba
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

Verfasst: Mittwoch 16. August 2006, 16:11
von Python 47
Ähm du bewegst dich also im millisekundenbereich und nennst das ein Zeitproblem? :shock:

Verfasst: Mittwoch 16. August 2006, 16:19
von gorba
=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....

Re: read() Zeitproblem

Verfasst: Mittwoch 16. August 2006, 18:13
von gerold
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?
Hi gorba!

Vielleicht, aber wirklich nur vielleicht -- kannst du damit etwas anfangen:
http://docs.python.org/lib/module-select.html

mfg
Gerold
:-)

Verfasst: Donnerstag 17. August 2006, 06:31
von gorba
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

Verfasst: Donnerstag 17. August 2006, 07:53
von gerold
gorba hat geschrieben:Unter Windows funktioniert das Ding leider nur auf Sockets.
Hi Gorba!

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
:-)

Verfasst: Donnerstag 17. August 2006, 08:01
von gorba
klasse =D
Danke für die idee. Jo sry für die mangelhaften angabe, bin neu auf Windows und auf Python =S Aber ich seh schon, auch hier kann man kreativ sein =)
thx