X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=sigrok-meter;h=289d25c6dd97d8b1b1b7b190c634b0ecfdd4427d;hb=627e5230c43fdda5595a20c52e6d5da976054752;hp=d53a288a2eb7d560943df6aee9e8461ea3f53681;hpb=13e332b78eb4ead7ded3ad2eb5cdaadeda769aad;p=sigrok-meter.git diff --git a/sigrok-meter b/sigrok-meter index d53a288..289d25c 100755 --- a/sigrok-meter +++ b/sigrok-meter @@ -21,35 +21,41 @@ from multiprocessing import Process, Queue from gi.repository import Gtk, GObject -from sigrok.core import Context, Driver, Device, Session, Packet +from sigrok.core import * from sigrok.core import lowlevel as ll def init_and_run(queue): def datafeed_in(device, packet): - if packet.type == Packet.ANALOG: + if packet.type is PacketType.ANALOG: data = packet.payload.data unit, unit_str = packet.payload.unit, "" - if unit == ll.SR_UNIT_VOLT: + if unit is Unit.VOLT: unit_str = " V" - elif unit == ll.SR_UNIT_OHM: + elif unit is Unit.OHM: unit_str = " Ohm" - elif unit == ll.SR_UNIT_AMPERE: + elif unit is Unit.AMPERE: unit_str = " A" - mqflags, mqflags_str = packet.payload.unit, "" - if mqflags & ll.SR_MQFLAG_AC: + mqflags, mqflags_str = packet.payload.mqflags, "" + if QuantityFlag.AC in mqflags: mqflags_str = " AC" - elif mqflags & ll.SR_MQFLAG_DC: + elif QuantityFlag.DC in mqflags: mqflags_str = " DC" for i in range(packet.payload.num_samples): - queue.put("%f%s%s" % (data[i], unit_str, mqflags_str)) + dev = "%s" % device.vendor + val = "%f%s%s" % (data[i], unit_str, mqflags_str) + queue.put((dev, val)) - # ll.sr_log_loglevel_set(5) + # log = Log() + # log.level = LogLevel.SPEW context = Context() - driver = context.drivers['voltcraft-vc820'] - device = driver.scan()[0] - device.limit_samples = 1000 + drivers_to_use = ['voltcraft-vc820', 'victor-dmm'] + drivers = [context.drivers[d] for d in drivers_to_use] + devices = [d.scan()[0] for d in drivers] + for dev in devices: + dev.limit_samples = 1000 session = Session(context) - session.add_device(device) + for dev in devices: + session.add_device(dev) session.add_callback(datafeed_in) session.start() session.run() @@ -61,6 +67,7 @@ class SigrokMeter: self.builder.add_from_file("sigrok-meter.glade") self.builder.connect_signals(self) self.value_label = self.builder.get_object("value_label") + self.value_label2 = self.builder.get_object("value_label2") self.win = self.builder.get_object("mainwindow") self.win.show_all() self.queue = Queue() @@ -69,7 +76,8 @@ class SigrokMeter: def update_label_if_needed(self): try: t = self.queue.get_nowait() - self.value_label.set_text(t) + l = self.value_label if t[0] != "Victor" else self.value_label2 + l.set_text("%s: %s" % (t[0], t[1])) except: pass GObject.timeout_add(100, self.update_label_if_needed) @@ -87,9 +95,9 @@ class SigrokMeter: about.hide() if __name__ == '__main__': - s = SigrokMeter() - process = Process(target=init_and_run, args=(s.queue,)) - process.start() - Gtk.main() - process.terminate() + s = SigrokMeter() + process = Process(target=init_and_run, args=(s.queue,)) + process.start() + Gtk.main() + process.terminate()