[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