[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