]> sigrok.org Git - sigrok-meter.git/blame - sigrok-meter
Use python 2.
[sigrok-meter.git] / sigrok-meter
CommitLineData
5add80f6
JS
1#!/usr/bin/env python
2
c09ca11b
UH
3##
4## This file is part of the sigrok-meter project.
5##
6## Copyright (C) 2013 Uwe Hermann <uwe@hermann-uwe.de>
7##
8## This program is free software; you can redistribute it and/or modify
9## it under the terms of the GNU General Public License as published by
10## the Free Software Foundation; either version 2 of the License, or
11## (at your option) any later version.
12##
13## This program is distributed in the hope that it will be useful,
14## but WITHOUT ANY WARRANTY; without even the implied warranty of
15## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16## GNU General Public License for more details.
17##
18## You should have received a copy of the GNU General Public License
19## along with this program; if not, write to the Free Software
20## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21##
22
13e332b7
UH
23from multiprocessing import Process, Queue
24from gi.repository import Gtk, GObject
97f3176e 25from sigrok.core import *
627e5230 26from sigrok.core import lowlevel as ll
13e332b7
UH
27
28def init_and_run(queue):
29 def datafeed_in(device, packet):
97f3176e 30 if packet.type is PacketType.ANALOG:
13e332b7
UH
31 data = packet.payload.data
32 unit, unit_str = packet.payload.unit, ""
97f3176e 33 if unit is Unit.VOLT:
13e332b7 34 unit_str = " V"
97f3176e 35 elif unit is Unit.OHM:
13e332b7 36 unit_str = " Ohm"
627e5230 37 elif unit is Unit.AMPERE:
13e332b7 38 unit_str = " A"
49e0ee28 39 mqflags, mqflags_str = packet.payload.mqflags, ""
97f3176e 40 if QuantityFlag.AC in mqflags:
13e332b7 41 mqflags_str = " AC"
97f3176e 42 elif QuantityFlag.DC in mqflags:
13e332b7
UH
43 mqflags_str = " DC"
44 for i in range(packet.payload.num_samples):
53fed2c3 45 dev = "%s %s" % (device.vendor, device.model)
49e0ee28
UH
46 val = "%f%s%s" % (data[i], unit_str, mqflags_str)
47 queue.put((dev, val))
13e332b7 48
774c3953 49 # log = Log()
97f3176e 50 # log.level = LogLevel.SPEW
13e332b7 51 context = Context()
53fed2c3 52 drivers_to_use = ['tecpel-dmm-8061-ser']
49e0ee28 53 drivers = [context.drivers[d] for d in drivers_to_use]
53fed2c3
UH
54 devices = [d.scan(conn="/dev/ttyUSB0")[0] for d in drivers]
55 # devices = [d.scan()[0] for d in drivers]
56 # for dev in devices:
57 # dev.limit_samples = 1000
13e332b7 58 session = Session(context)
49e0ee28 59 for dev in devices:
53fed2c3 60 session.open_device(dev)
49e0ee28 61 session.add_device(dev)
13e332b7
UH
62 session.add_callback(datafeed_in)
63 session.start()
64 session.run()
65 session.stop()
c09ca11b 66
730cbd1f
UH
67class SigrokMeter:
68 def __init__(self):
69 self.builder = Gtk.Builder()
70 self.builder.add_from_file("sigrok-meter.glade")
71 self.builder.connect_signals(self)
13e332b7 72 self.value_label = self.builder.get_object("value_label")
49e0ee28 73 self.value_label2 = self.builder.get_object("value_label2")
fd029d02 74 self.win = self.builder.get_object("mainwindow")
730cbd1f 75 self.win.show_all()
13e332b7
UH
76 self.queue = Queue()
77 GObject.timeout_add(100, self.update_label_if_needed)
78
79 def update_label_if_needed(self):
80 try:
81 t = self.queue.get_nowait()
49e0ee28
UH
82 l = self.value_label if t[0] != "Victor" else self.value_label2
83 l.set_text("%s: %s" % (t[0], t[1]))
13e332b7
UH
84 except:
85 pass
86 GObject.timeout_add(100, self.update_label_if_needed)
730cbd1f 87
fd029d02 88 def on_quit(self, *args):
2f5ef701 89 Gtk.main_quit(*args)
730cbd1f 90
fd029d02 91 def on_about(self, action):
730cbd1f 92 about = self.builder.get_object("aboutdialog")
13e332b7
UH
93 sr_pkg = ll.sr_package_version_string_get()
94 sr_lib = ll.sr_lib_version_string_get()
a683a5e2
UH
95 s = "Using libsigrok %s (lib version %s)." % (sr_pkg, sr_lib)
96 about.set_comments(s)
dd73092b
UH
97 about.run()
98 about.hide()
2f5ef701 99
730cbd1f 100if __name__ == '__main__':
9e7bd3d2
UH
101 s = SigrokMeter()
102 process = Process(target=init_and_run, args=(s.queue,))
103 process.start()
104 Gtk.main()
105 process.terminate()
c09ca11b 106