# gpib.py # pull in data from an HP 34401A bench multimeter using a Prologix GPIB-USB adapter # 2019, Zach Fredin, MIT CBA import serial import tkinter as tk from tkinter import StringVar import sys import time if (len(sys.argv) != 2): print ("to use, type python3 gpib.py /dev/ttyUSBx") sys.exit() port = sys.argv[1] ser = serial.Serial(port,9600) ser.setDTR() class Application(tk.Frame): def __init__(self, master=None): super().__init__(master) self.master = master self.pack() self.create_widgets() def create_widgets(self): self.read = tk.Button(self) self.read["text"] = "get reading" self.read["command"] = self.get_reading self.read.pack(side="top") self.label_text = StringVar() self.label_text.set("") self.label = tk.Label(self, text=self.label_text) self.label.pack() self.quit = tk.Button(self, text="quit", fg="red", command=self.master.destroy) self.quit.pack(side="bottom") def get_reading(self): val = "" out = "" ser.write(b'D2how to make\r') ser.write(b'OUTPUT 723; "H1"\r') time.sleep(3) ser.write(b'++read\r') while val != '\r': val = ser.read().decode() out += val print (out) root = tk.Tk() app = Application(master=root) app.mainloop()