[Tutor PyCZ] event, interrup, listener..proste asynchronni udalost v pythonu..
rajcze
rajcze na gmail.com
Pondělí Září 18 19:29:58 CEST 2006
naznak reseni:
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/18/06, rajcze <rajcze na gmail.com> wrote:
> vytvor si timer, kterej bude v nejakym dosatatecne kratkym intervalu
> kontrolovat, jestli nema nejaky znaky k precteni, a kdyz jo, tak si z
> neho zavolej metodu, ve ktere to prectes a zpracujes.
>
> On 9/18/06, Luboš Melichar <lubos.melichar na gmail.com> wrote:
> > experimentuju se seriovym portem..
> > umim prijmou 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???
> >
> > _______________________________________________
> > Tutor mailing list
> > Tutor na py.cz
> > http://www.py.cz/mailman/listinfo/tutor
> >
> >
>
>
> --
> Linux je user friendly, ale pratele si vybira
>
--
Linux je user friendly, ale pratele si vybira
Další informace o konferenci Tutor