+from multiprocessing import Process, Queue
+from gi.repository import Gtk, GObject
+from sigrok.core import Context, Driver, Device, Session, Packet
+from sigrok.core import lowlevel as ll
+
+def init_and_run(queue):
+ def datafeed_in(device, packet):
+ if packet.type == Packet.ANALOG:
+ data = packet.payload.data
+ unit, unit_str = packet.payload.unit, ""
+ if unit == ll.SR_UNIT_VOLT:
+ unit_str = " V"
+ elif unit == ll.SR_UNIT_OHM:
+ unit_str = " Ohm"
+ elif unit == ll.SR_UNIT_AMPERE:
+ unit_str = " A"
+ mqflags, mqflags_str = packet.payload.unit, ""
+ if mqflags & ll.SR_MQFLAG_AC:
+ mqflags_str = " AC"
+ elif mqflags & ll.SR_MQFLAG_DC:
+ mqflags_str = " DC"
+ for i in range(packet.payload.num_samples):
+ queue.put("%f%s%s" % (data[i], unit_str, mqflags_str))
+
+ # ll.sr_log_loglevel_set(5)
+ context = Context()
+ driver = context.drivers['voltcraft-vc820']
+ device = driver.scan()[0]
+ device.limit_samples = 1000
+ session = Session(context)
+ session.add_device(device)
+ session.add_callback(datafeed_in)
+ session.start()
+ session.run()
+ session.stop()