[python] event, interrup, listener..proste asynchronni udalost v pythonu..
rajcze
rajcze na gmail.com
Úterý Září 19 14:00:01 CEST 2006
jak uz sem ti odpovidal i v Tutor konforenci: vytvor si thread, ve
kterym budes hlidat jestli nemas neco na vstupu a kdyz jo tak to
zpracuj
mohlo by to vypadat treba takhle:
import serial
import time
import threading
def scan_COM_ports():
"""scan for available ports. return a list of tuples (num, name)"""
available = []
for i in range(256):
try:
s = serial.Serial(i)
available.append( (i, s.portstr))
s.close() #explicit close 'cause of delayed GC in java
except serial.SerialException:
pass
print "nalezene com porty:"
for n,s in available:
print "(%d) %s" % (n,s)
class Timer(threading.Thread):
def __init__(self,sleep,port,action):
self.sleep=sleep
self.port=port
self.action=action
threading.Thread.__init__(self)
def run(self):
while 1:
time.sleep(self.sleep)
buff=self.port.inWaiting()
if buff>0:
data=self.port.read(buff)
self.action(data)
def zpracuj_packet(data):
print "zpracovavam packet:",data
def main():
scan_COM_ports()
a=raw_input("vyber COM port: ")
ser=serial.Serial(a,baudrate=1200)
my_timer=Timer(0.01,ser,zpracuj_packet)
my_timer.start()
On 9/19/06, Luboš Melichar <lubos.melichar na gmail.com> wrote:
> experimentuju se seriovym portem..
>
> pouzivam pyserial http://pyserial.sourceforge.net/
>
> umim prijmout i poslat znak..
> u prijmu mam zatim nasledujici problem..
>
> fce read() mi proste ceka nez prijde nejaky znak do prijimaciho bufferu a
> nevykonava se do te doby nic jineho..program stoji..
> mam sice fci inWaiting() ktera mi vraci kolik znaku je v prijimacim
> bufferu..
> takze bych ho mohl sem tam skenovat a teprve pokud neni prazdny tak pomoci
> read() precist znak..
> ..
> to mi ale na python prijde krkolomne..u mikrocipu jsou interrupty, u javy
> listenery(listenery), jak si s tim poradit v pythonu???
>
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
>
--
Linux je user friendly, ale pratele si vybira
Další informace o konferenci Python