예제 #1
0
    def test_plot(self):
        modulator = Modulator("gfsk")
        modulator.modulation_type_str = "GFSK"
        modulator.samples_per_bit = 100
        modulator.sample_rate = 1e6
        modulator.param_for_one = 20e3
        modulator.param_for_zero = 10e3
        modulator.carrier_freq_hz = 15e3
        modulator.carrier_phase_deg = 90

        modulator.modulate([True, False, True, False, False], 77)
        data = copy.deepcopy(modulator.modulated_samples)
        modulator.modulate([False, True, True, True, True, False, True],
                           100,
                           start=len(data))
        data = np.concatenate((data, modulator.modulated_samples))

        plt.subplot(2, 1, 1)
        axes = plt.gca()
        axes.set_ylim([-2, 2])
        plt.plot(data.real)
        plt.title("Modulated Wave")

        plt.subplot(2, 1, 2)
        qad = signalFunctions.afp_demod(np.ascontiguousarray(data), 0, 1)
        plt.plot(qad)
        plt.title("Quad Demod")

        plt.show()
예제 #2
0
def build_modulator_from_args(arguments: argparse.Namespace):
    if arguments.raw:
        return None

    if arguments.parameter_zero is None:
        raise ValueError("You need to give a modulation parameter for zero (-p0, --parameter-zero)")

    if arguments.parameter_one is None:
        raise ValueError("You need to give a modulation parameter for one (-p1, --parameter-one)")

    result = Modulator("CLI Modulator")
    result.carrier_freq_hz = float(arguments.carrier_frequency)
    result.carrier_amplitude = float(arguments.carrier_amplitude)
    result.carrier_phase_deg = float(arguments.carrier_phase)
    result.samples_per_bit = int(arguments.bit_length)

    if arguments.modulation_type == "ASK":
        if arguments.parameter_zero.endswith("%"):
            param_zero = float(arguments.parameter_zero[:-1])
        else:
            param_zero = float(arguments.parameter_zero) * 100
        if arguments.parameter_one.endswith("%"):
            param_one = float(arguments.parameter_one[:-1])
        else:
            param_one = float(arguments.parameter_one) * 100
    else:
        param_zero = float(arguments.parameter_zero)
        param_one = float(arguments.parameter_one)

    result.param_for_zero = param_zero
    result.param_for_one = param_one
    result.modulation_type_str = arguments.modulation_type
    result.sample_rate = arguments.sample_rate

    return result
예제 #3
0
파일: urh_cli.py 프로젝트: zxc135781/urh
def build_modulator_from_args(arguments: argparse.Namespace):
    if arguments.raw:
        return None
    if arguments.bits_per_symbol is None:
        arguments.bits_per_symbol = 1

    n = 2 ** int(arguments.bits_per_symbol)
    if arguments.parameters is None or len(arguments.parameters) != n:
        raise ValueError("You need to give {} parameters for {} bits per symbol".format(n, int(arguments.bits_per_symbol)))

    result = Modulator("CLI Modulator")
    result.carrier_freq_hz = float(arguments.carrier_frequency)
    result.carrier_amplitude = float(arguments.carrier_amplitude)
    result.carrier_phase_deg = float(arguments.carrier_phase)
    result.samples_per_symbol = int(arguments.samples_per_symbol)
    result.bits_per_symbol = int(arguments.bits_per_symbol)
    result.modulation_type = arguments.modulation_type
    result.sample_rate = arguments.sample_rate

    for i, param in enumerate(arguments.parameters):
        if result.is_amplitude_based and param.endswith("%"):
            result.parameters[i] = float(param[:-1])
        elif result.is_amplitude_based and not param.endswith("%"):
            result.parameters[i] = float(param) * 100
        else:
            result.parameters[i] = float(param)

    return result
예제 #4
0
파일: PlotTests.py 프로젝트: jopohl/urh
    def test_plot(self):
        modulator = Modulator("gfsk")
        modulator.modulation_type_str = "GFSK"
        modulator.samples_per_bit = 100
        modulator.sample_rate = 1e6
        modulator.param_for_one = 20e3
        modulator.param_for_zero = 10e3
        modulator.carrier_freq_hz = 15e3
        modulator.carrier_phase_deg = 90

        modulated_samples = modulator.modulate([True, False, True, False, False], 77)
        data = copy.deepcopy(modulated_samples)
        modulated_samples = modulator.modulate([False, True, True, True, True, False, True], 100, start=len(data))
        data = np.concatenate((data, modulated_samples))

        plt.subplot(2, 1, 1)
        axes = plt.gca()
        axes.set_ylim([-2,2])
        plt.plot(data.real)
        plt.title("Modulated Wave")

        plt.subplot(2, 1, 2)
        qad = signal_functions.afp_demod(np.ascontiguousarray(data), 0, 1)
        plt.plot(qad)
        plt.title("Quad Demod")

        plt.show()
예제 #5
0
파일: urh_cli.py 프로젝트: jopohl/urh
def build_modulator_from_args(arguments: argparse.Namespace):
    if arguments.raw:
        return None

    if arguments.parameter_zero is None:
        raise ValueError("You need to give a modulation parameter for zero (-p0, --parameter-zero)")

    if arguments.parameter_one is None:
        raise ValueError("You need to give a modulation parameter for one (-p1, --parameter-one)")

    result = Modulator("CLI Modulator")
    result.carrier_freq_hz = float(arguments.carrier_frequency)
    result.carrier_amplitude = float(arguments.carrier_amplitude)
    result.carrier_phase_deg = float(arguments.carrier_phase)
    result.samples_per_bit = int(arguments.bit_length)

    if arguments.modulation_type == "ASK":
        if arguments.parameter_zero.endswith("%"):
            param_zero = float(arguments.parameter_zero[:-1])
        else:
            param_zero = float(arguments.parameter_zero) * 100
        if arguments.parameter_one.endswith("%"):
            param_one = float(arguments.parameter_one[:-1])
        else:
            param_one = float(arguments.parameter_one) * 100
    else:
        param_zero = float(arguments.parameter_zero)
        param_one = float(arguments.parameter_one)

    result.param_for_zero = param_zero
    result.param_for_one = param_one
    result.modulation_type_str = arguments.modulation_type
    result.sample_rate = arguments.sample_rate

    return result
예제 #6
0
    def read_modulators_from_file(self, filename: str):
        if not filename:
            return []

        tree = ET.parse(filename)
        root = tree.getroot()

        result = []
        for mod_tag in root.iter("modulator"):
            mod = Modulator(mod_tag.attrib["name"])
            mod.carrier_freq_hz = float(mod_tag.attrib["carrier_freq_hz"])
            mod.carrier_amplitude = float(mod_tag.attrib["carrier_amplitude"])
            mod.carrier_phase_deg = float(mod_tag.attrib["carrier_phase_deg"])
            mod.modulation_type = int(mod_tag.attrib["modulation_type"])
            mod.sample_rate = float(mod_tag.attrib["sample_rate"])
            mod.param_for_one = float(mod_tag.attrib["param_for_one"])
            mod.param_for_zero = float(mod_tag.attrib["param_for_zero"])
            result.append(mod)

        return result