X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=sigrok-meter;h=884ad2d08781a187db2f83f67615484166061ca8;hb=480cdb7bc04548aec46b7342d6fa1acafa60331c;hp=72b8d49ee832d48a167aafec866ed3020789bbb9;hpb=dab07392b9369b10d459dd989dd77d1cda541c33;p=sigrok-meter.git diff --git a/sigrok-meter b/sigrok-meter index 72b8d49..884ad2d 100755 --- a/sigrok-meter +++ b/sigrok-meter @@ -1,5 +1,4 @@ #!/usr/bin/env python - ## ## This file is part of the sigrok-meter project. ## @@ -26,28 +25,39 @@ import sigrok.core as sr import sys import textwrap -default_drivers = ['demo:analog_channels=4'] -default_loglevel = sr.LogLevel.WARN +default_drivers = [('demo:analog_channels=4', 'samplerate=4')] +default_loglevel = 2 def parse_cli(): parser = argparse.ArgumentParser( description='Simple sigrok GUI for multimeters and dataloggers.', epilog=textwrap.dedent('''\ - The DRIVER string is the same as for sigrok-cli(1). + The DRIVER string is the same as for sigrok-cli(1). The nth + CONFIG is applied to the nth DRIVER. If there are more drivers + than configs, the remaining drivers use the default configuration. - examples: + Examples: %(prog)s --driver tecpel-dmm-8061-ser:conn=/dev/ttyUSB0 %(prog)s --driver uni-t-ut61e:conn=1a86.e008 + + %(prog)s --driver demo:analog_channels=1 \\ + --config samplerate=10 '''), formatter_class=argparse.RawDescriptionHelpFormatter) parser.add_argument('-d', '--driver', action='append', + default=[], help='The driver to use') + parser.add_argument('-c', '--config', + action='append', + default=[], + help='Specify device configuration options') parser.add_argument('-l', '--loglevel', type=int, + default=default_loglevel, help='Set loglevel (5 is most verbose)') parser.add_argument('--pyside', action='store_true', @@ -55,37 +65,40 @@ def parse_cli(): help='Force use of PySide (default is to use PyQt4)') args = parser.parse_args() - result = { - 'drivers': default_drivers, - 'loglevel': default_loglevel, - 'pyside': args.pyside - } + if len(args.config) > len(args.driver): + sys.exit('Error: More configurations than drivers given.') + # Merge drivers and configurations into a list of tuples. + setattr(args, 'drivers', []) + if not args.driver: + args.drivers = default_drivers + sys.stderr.write('No driver given, using demo driver.\n') if args.driver: - result['drivers'] = args.driver - - if args.loglevel != None: - try: - result['loglevel'] = sr.LogLevel.get(args.loglevel) - except: - sys.exit('error: invalid log level') + args.config.extend([''] * (len(args.driver) - len(args.config))) + args.drivers = zip(args.driver, args.config) + del args.driver + del args.config - return result + return args if __name__ == '__main__': args = parse_cli() import qtcompat - qtcompat.load_modules(args['pyside']) + qtcompat.load_modules(args.pyside) QtCore = qtcompat.QtCore QtGui = qtcompat.QtGui import mainwindow context = sr.Context_create() - context.log_level = args['loglevel'] + try: + loglevel = sr.LogLevel.get(args.loglevel) + context.log_level = loglevel + except: + sys.exit('Error: invalid log level.') app = QtGui.QApplication([]) - s = mainwindow.MainWindow(context, args['drivers']) + s = mainwindow.MainWindow(context, args.drivers) s.show() sys.exit(app.exec_())