X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=sigrok-meter;h=dc34745445d63f9efc7642726154f73d2d767b65;hb=0404712a82911d1de98b8a936a983103ffe4e471;hp=72b8d49ee832d48a167aafec866ed3020789bbb9;hpb=dab07392b9369b10d459dd989dd77d1cda541c33;p=sigrok-meter.git diff --git a/sigrok-meter b/sigrok-meter index 72b8d49..dc34745 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,44 @@ 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). Multiple + DRIVER and CONFIG items can be supplied. 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 + + %(prog)s --driver voltcraft-k204:conn=/dev/ttyUSB0 \\ + --driver uni-t-ut61d:conn=1a86.e008 \\ + --driver uni-t-ut61e-ser:conn=/dev/ttyUSB1 '''), 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 +70,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_())