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)
Пример #2
0
    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()
Пример #3
0
    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()