#!/usr/bin/python3 import numpy as np import sys, logging, os, argparse parser = argparse.ArgumentParser( description='Play a sine wave' ) parser.add_argument('--freq', '-f', help='Sine frequency [Hz]', type=float, default=1000.) parser.add_argument('--log', '-l', help='Specify log level [info, debug, warning, ...]', type=str, default='info') args = parser.parse_args() numeric_level = getattr(logging, args.log.upper(), None) if not isinstance(numeric_level, int): raise ValueError('Invalid log level: %s' % args.loglevel) FORMAT = "[%(levelname)s %(filename)s:%(lineno)s - %(funcName)20s() ] %(message)s" logging.basicConfig(format=FORMAT, level=numeric_level) import multiprocessing from lasp import (StreamManager, AvType, Siggen, SignalType, SiggenData) from lasp.device import DaqConfigurations if __name__ == '__main__': multiprocessing.set_start_method('forkserver', force=True) logging.info(f'Playing frequency {args.freq} [Hz]') configs = DaqConfigurations.loadAllConfigs() config_keys = [key for key in configs.keys()] for i, key in enumerate(config_keys): print(f'{i:2} : {key}') choosen_index = input('Number of configuration to use: ') try: daqindex = int(choosen_index) except: print('Invalid configuration number. Exiting.') sys.exit(0) choosen_key = config_keys[daqindex] daqconfig = configs[choosen_key].output_config print(f'Choosen configuration: {choosen_key}') try: streammgr = StreamManager() outq = streammgr.getOutputQueue() siggendata = SiggenData( fs=48e3, nframes_per_block=1024, dtype=np.dtype(np.int16), eqdata=None, level_dB=-20, signaltype=SignalType.Periodic, signaltypedata=(args.freq,) ) siggen = Siggen(outq, siggendata) streammgr.activateSiggen() streammgr.startStream(AvType.audio_output, daqconfig) input('Press any key to stop...') streammgr.stopStream(AvType.audio_output) finally: siggen.cleanup() streammgr.cleanup()