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 <[EMAIL PROTECTED]> 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@py.cz > http://www.py.cz/mailman/listinfo/python > > -- Linux je user friendly, ale pratele si vybira _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python