def readCommand(sensorList, conditionList): # Se leen comandos mientras existan sensores activos while len(sensorDict) > 0: # Pregunta si hay mensajes por recibir if com.lenght() > 0: # Recibe el mensaje en cola comando = com.receive() sensorNumber = sensorDict[comando.getReceiver()] #sensorNumber = sensorDict[parsedCommand[0]] # Adquiere el lock sobre la condicion para garantizar la # exclusion mutua sobre las variables compartidas conditionList[sensorNumber].acquire() # interpreta los comandos y actua de acuerdo a lo recibido if (comando.getCommand() == "SENSE") | (comando.getCommand() == "SETFR"): sensorList[sensorNumber].setSenseFlag(True) sensorList[sensorNumber].setFrequency(comando.getValue()) #sensorList[sensorNumber].setFrequency(int(parsedCommand[2])) else: # Si se recibe un STOP sobre un determinado sensor, # se lo elimina del diccionario sensorList[sensorNumber].setSenseFlag(False) del sensorDict[comando.getReceiver()]; # Despierta los hilos dormidos bajo la condicion y libera el bloqueo conditionList[sensorNumber].notify() conditionList[sensorNumber].release() exit (0)
def receiveData(f): while len(sensorReceiver) > 0: if com.lenght() > 0: dato = com.receive() print dato.getSender() f.write(dato.getSender().center(15)+'-'.center(10)+'-'.center(10)+str(dato.getData()).center(10)+dato.getUnit().center(10)+time.strftime("%H:%M:%S").center(10)+'\n') exit(0)
def main(): endMain = False os.system('clear') print '----------- MODULO DE COMUNICACION -----------\n' print '\t\t1 - Enviar mensaje/archivo' print '\t\t2 - Enviar instancia de mensaje' print '\t\t3 - Leer un mensaje' print '\t\t4 - Llamar a un número' print '\t\t5 - Atender la llamada' print '\t\t6 - Colgar la llamada' print '\t\t7 - Conectar GPRS' print '\t\t8 - Desconectar GPRS' print '\t\tq - Salir' print '\t\to - DEBUG: Abrir Comunicador' print '\t\tc - DEBUG: Cerrar Comunicador\n' communicator.open() while not endMain: try: #termios.tcflush(sys.stdin, termios.TCIOFLUSH) # Limpiamos el stdin optionSelected = raw_input() # Opcion 1 - Enviar mensaje if optionSelected is '1': # Preguntamos si se desea ver una lista con los clientes registrados selectClient = askClients() if selectClient is None: print 'Abortado.' continue # Indicamos el cliente al cual se va a enviar el mensaje receiver = raw_input('Cliente a enviar: ') # Indicamos el mensaje que se desea enviar messageToSend = raw_input('Mensaje a enviar: ') # Preguntamos si hay alguna preferencia en relación a los medios de comunicación selectMedia = askMedia() if selectMedia is True: # El medio preferido está dado por 'media' media = raw_input('Medio de comunicación preferido: ') communicator.send(messageToSend, receiver, media) # <----- IMPORTANTE elif selectMedia is False: # El medio se elige automáticamente communicator.send(messageToSend, receiver) # <----- IMPORTANTE else: print 'Abortado.' continue # Opcion 2 - Enviar instancia de mensaje elif optionSelected is '2': # Establecemos el campo 'sender' sender = raw_input('Nombre del emisor: ') # Preguntamos si se desea ver una lista con los clientes registrados selectClient = askClients() if selectClient is None: print 'Abortado.' continue # Establecemos el campo 'receiver' receiver = raw_input('Cliente a enviar: ') # Establecemos el campo 'infoText' infoText = raw_input('Mensaje a enviar: ') # Creamos la instancia de mensaje infoMessage = messageClass.InfoMessage(sender, receiver, infoText) # Preguntamos si hay alguna preferencia en relación a los medios de comunicación selectMedia = askMedia() if selectMedia is True: # El medio preferido está dado por 'media' media = raw_input('Medio de comunicación preferido: ') communicator.send(infoMessage, media = media) # <----- IMPORTANTE elif selectMedia is False: # El medio se elige automáticamente communicator.send(infoMessage) # <----- IMPORTANTE else: print 'Abortado.' continue # Opcion 3 - Leer un mensaje elif optionSelected is '3': messageReceived = communicator.receive() if messageReceived is not None: if isinstance(messageReceived, messageClass.Message): print 'Instancia de mensaje recibida: ' + str(messageReceived) print '\tPrioridad: ' + str(messageReceived.priority) print '\tEmisor: ' + messageReceived.sender if isinstance(messageReceived, messageClass.InfoMessage): print '\tMensaje de texto: ' + str(messageReceived.infoText) else: print 'Mensaje recibido: %s' % messageReceived # Opcion 4 - Llamar a un número elif optionSelected is '4': # Indicamos el número al cual efectuar la llamada de voz telephoneNumber = raw_input('Número a llamar: ') communicator.sendVoiceCall(telephoneNumber) # Opcion 5 - Atender la llamada elif optionSelected is '5': communicator.answerVoiceCall() # Opcion 6 - Colgar la llamada elif optionSelected is '6': communicator.hangUpVoiceCall() # Opcion 7 - Conectar GPRS elif optionSelected is '7': communicator.connectGprs() # Opcion 8 - Desconectar GPRS elif optionSelected is '8': communicator.disconnectGprs() elif optionSelected is 'q': endMain = True elif optionSelected is 'o': communicator.open() elif optionSelected is 'c': communicator.close() # Opcion inválida else: print 'Opción inválida!' except KeyboardInterrupt: endMain = True communicator.close() print '\n---------------- UNC - Fcefyn ----------------' print '---------- Ingeniería en Computación ---------'