def output_sound(path, msje, baudios, rate): # Dependiendo de los baudios a los que transmita la radio, es la frecuencia de los 1 y de los 0 duracion = 0 freq0 = 0 freq1 = 0 if baudios == 1200: freq1 = 1200 freq0 = 1800 duracion = 0.0009 elif baudios == 2400: freq1 = 1200 freq0 = 2400 duracion = 0.0004166 elif baudios == 4800: freq1 = 2400 freq0 = 4800 duracion = 0.0002083 uno = b"".join(util.sine_samples(freq1, duracion, rate)) # frecuencia para 1 cero = b"".join(util.sine_samples(freq0, duracion, rate)) # frecuencia para 0 frames = bytearray() i = 0 for elemento in msje: if elemento == 1: frames = frames + uno elif elemento == 0: frames = frames + cero util.output_wave(path, frames, rate)
def extraerMensaje(self): global msj global variable msj = self.ui.lineEdit.text() mensajeBinario = c_emisor.text_to_bits(msj) destinoBinario = c_emisor.text_to_bits(nuevo_receptor.get_direccion()) señalDigital = c_emisor.codificar( mensajeBinario, destinoBinario, c_emisor.text_to_bits(nuevo_emisor.get_direccion()), c_emisor.text_to_bits("1"), c_util.dec_to_bin(c_util.checksum(4, mensajeBinario)), ) señalDigitalArray = c_util.text_to_array(señalDigital) señalAnaloga = c_modulador.output_sound( "audios/pruebaSinRuido_desdeGUI" + str(variable) + ".wav", señalDigitalArray, 1200, 44100 ) # Canal # señalAnalogaRuido = c_util.generar_ruido("audios/ruido_Jonas_desdeGUI" + str(variable) + ".wav") rate_ruido, data_ruido = c_util.leeraudio("audios/ruido_Jonas_desdeGUI" + str(variable) + ".wav") rate_original, data_original = c_util.leeraudio("audios/pruebaSinRuido_desdeGUI" + str(variable) + ".wav") señalFinal = c_canal.sumar_ruido( "audios/senal_ruido_jonas_desdeGUI" + str(variable) + ".wav", data_original, data_ruido ) variable += 1 if msj: self.ui.mostrarmensaje(usuario, msj, color_rmte) self.ui.lineEdit.clear() else: func.aviso()
def abrir_archivo(self): fname = QtGui.QFileDialog.getOpenFileName( self, "Cargar archivo de Audio", "/Users/Camilo/PycharmProjects/digital-radio/src/audios", "" ) print(fname) if fname != "": rate_obtenido, data_obtenido = c_util.leeraudio(fname) try: cadena_obtenida = c_demodular.demodular(data_obtenido) mensaje_final = c_util.array_to_string(cadena_obtenida) print(mensaje_final[0:8]) if mensaje_final[0:8] == "10000001": if nuevo_receptor.get_direccion() == c_receptor.recuperar_receptor(mensaje_final): validacion = c_util.checksum(4, mensaje_final[128:2176]) # print(int(c_receptor.recuperar_fcs(mensaje_final), 2)) # valor = c_util.dec_to_bin(validacion) # print("el valor es:"+valor) # print("el otro valor es:"+c_receptor.recuperar_fcs(mensaje_final)) if int(c_receptor.recuperar_fcs(mensaje_final), 2) == validacion: global direcciones if c_receptor.recuperar_emisor(mensaje_final) in direcciones: print(direcciones.get(c_receptor.recuperar_emisor(mensaje_final))) self.ui.pinta_amarillo(direcciones.get(c_receptor.recuperar_emisor(mensaje_final))) rmte = direcciones.get(c_receptor.recuperar_emisor(mensaje_final)) msg = c_receptor.recuperar_mensaje(mensaje_final) mensajes[rmte] = msg # direcciones.pop(c_receptor.recuperar_emisor(mensaje_final)) else: func.aviso_noestuyo() else: func.aviso_check() else: func.bandera_incorrecta() print("mensaje viene de forma incorrecta") except UnicodeDecodeError: func.aviso_ruido()