def threadSocket(Socket, port): ''' Thread encargado de sotener comunicacion entre Socket cliente y el puerto serial asignado Mientras se mantenga activo el thread de recepcion se intentara leer del puerto serial y enviarlo al socket cliente Se asume que socket y port son objetos vaidos validos ''' #Intenta abrir el puerto serial try: COM = serial.Serial(port-1) except: #Si esta en uso no se encuentra disponible, muestra error print 'Error: Puerto COM'+str(port)+' no disponible' else: #Al conectarse se crea el thread de recepcion print 'Conectado a puerto COM'+str(port) rxThread = threading.Thread(target=rxThreadDef,args=(Socket,COM)) rxThread.start() dato = '' #Mientras el thread este activo while rxThread.isAlive(): try: #Lee del puerto serial y envia a Socket cliente dato += COM.read() if parserCOMToSocket(dato): Socket.send(dato) dato='' except: break print "Puerto cerrado!" #Cierra puerto Serial COM.close() #Cierra Socket Socket.close() #print "Hilo terminado" def rxThreadDef(Socket,COM): ''' Thread (Hilo) encargado de recibir la informacion del Cliente y enviarla por medio del puerto serial Si se genera algun error se rompe el ciclo y termina el thread ''' dato = '' while 1: try: d = Socket.recv(1024) except: break if d: dato += d if parserSocketToCOM(dato): COM.write(dato) print dato dato = '' else: break def parserSocketToCOM(dato): return True def parserCOMToSocket(dato): return True