Skip to content

Commit

Permalink
add terminal switching and timestamping
Browse files Browse the repository at this point in the history
  • Loading branch information
Michael Dombrowski authored and Michael Dombrowski committed Feb 21, 2016
1 parent 21c3ccf commit 90138cb
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 12 deletions.
10 changes: 9 additions & 1 deletion HP_3457A.py
Original file line number Diff line number Diff line change
Expand Up @@ -573,4 +573,12 @@ def setPlc(self, plc):
self.plc = plc
nplc = "NPLC "+str(plc)+"\r\n"
self.ser.write(nplc)
time.sleep(1)
time.sleep(1)

def setTerm(self, term):
if term == "Rear":
self.ser.write("TERM 2\r\n");
else:
self.ser.write("TERM 1\r\n");
time.sleep(.5)

57 changes: 46 additions & 11 deletions dmm_control.py
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,7 @@ def __init__(self):
self.paused = False
self.dataval = dataval()
self.data = []
self.timing = []
self.worker = None
self.id = 1
if not self.worker:
Expand All @@ -238,8 +239,10 @@ def create_menu(self):

#file menu
menu_file = wx.Menu()
m_expt = menu_file.Append(-1, "&Save plot\tCtrl-S", "Save plot to file")
m_expt = menu_file.Append(-1, "&Save Plot\tCtrl-S", "Save Plot to File")
self.Bind(wx.EVT_MENU, self.on_save_plot, m_expt)
m_csv = menu_file.Append(-1, "&Save Data to CSV", "Save Data to CSV")
self.Bind(wx.EVT_MENU, self.on_save_csv, m_csv)
menu_file.AppendSeparator()
m_exit = menu_file.Append(-1, "E&xit\tCtrl-X", "Exit")
self.Bind(wx.EVT_MENU, self.on_exit, m_exit)
Expand All @@ -251,6 +254,8 @@ def create_menu(self):
self.Bind(wx.EVT_MENU, self.setCom, m_ser)
m_nplc = menu_set.Append(-1, "NPLC", "Number of Power Line Cycles")
self.Bind(wx.EVT_MENU, self.setNPLC, m_nplc)
m_term = menu_set.Append(-1, "Set Terminals", "Set Front/Rear Terminal")
self.Bind(wx.EVT_MENU, self.setTerm, m_term)
self.menubar.Append(menu_set, "&Settings")

self.SetMenuBar(self.menubar)
Expand Down Expand Up @@ -452,12 +457,12 @@ def draw_plot(self):
global hp
self.mainNum.SetValue(str(Units().convert(self.data[self.dataval.getlen() - 1])[0])[0:9] + " " + Units().convert(self.data[self.dataval.getlen() - 1])[1] + self.Mode[2])
offset = hp.getOffset(self.Mode[3], self.data[self.dataval.getlen() - 1])
self.upperLim.SetValue(str(Units().convert(self.data[self.dataval.getlen() - 1] + offset)[0])[0:8] + " " + Units().convert(self.data[self.dataval.getlen() - 1] + offset)[1] + self.Mode[2])
self.lowerLim.SetValue(str(self.data[self.dataval.getlen() - 1] - offset)[0:8] + " " + Units().convert(self.data[self.dataval.getlen() - 1] - offset)[1] + self.Mode[2])
self.upperLim.SetValue(str(Units().convert(self.data[self.dataval.getlen() - 1] + offset)[0])[0:9] + " " + Units().convert(self.data[self.dataval.getlen() - 1] + offset)[1] + self.Mode[2])
self.lowerLim.SetValue(str(self.data[self.dataval.getlen() - 1] - offset)[0:9] + " " + Units().convert(self.data[self.dataval.getlen() - 1] - offset)[1] + self.Mode[2])
max1 = Units().convert(self.dataval.getmax())
min1 = Units().convert(self.dataval.getmin())
self.max.SetValue(str(max1[0])[0:8] + " " + max1[1] + self.Mode[2])
self.min.SetValue(str(min1[0])[0:8] + " " + min1[1] + self.Mode[2])
self.max.SetValue(str(max1[0]) + " " + max1[1] + self.Mode[2])
self.min.SetValue(str(min1[0]) + " " + min1[1] + self.Mode[2])
avg = Units().convert(self.dataval.getavg())
self.avg.SetValue(str(avg[0])[0:9] + " " + avg[1] + self.Mode[2])
self.samps.SetValue(str(self.dataval.getlen()))
Expand Down Expand Up @@ -499,6 +504,7 @@ def on_pause_button(self, event):

def clear_data(self, event):
self.data = []
self.timing = []
self.dataval.clear()

def OnResult(self, event):
Expand All @@ -508,6 +514,7 @@ def OnResult(self, event):
if event.datas != 1.0000000E+38:
self.dataval.add(event.datas)
self.data.append(event.datas)
self.timing.append(int(round(time.time() * 1000)))
self.draw_plot()
else:
self.mainNum.SetValue("OVLD")
Expand All @@ -520,6 +527,7 @@ def setMode(self, event):
if self.worker is not None:
self.paused = True
time.sleep(1)
self.clear_data(self)
mode = event.GetId()
if (mode == 0):
self.Mode = ["DC Voltage", "Volts", "V", "dcv"]
Expand All @@ -534,7 +542,7 @@ def setMode(self, event):
if (mode == 5):
self.Mode = ["AC Current", "Amperes", "A", "aci"]
if (mode == 6):
self.Mode = ["DC Couple AC Voltage", "Volts", "V", "acdcv"]
self.Mode = ["DC Coupled AC Voltage", "Volts", "V", "acdcv"]
if (mode == 7):
self.Mode = ["DC Coupled AC Current", "Amperes", "A", "acdci"]
if (mode == 8):
Expand All @@ -561,18 +569,31 @@ def on_save_plot(self, event):
file_choices = "PNG (*.png)|*.png"
dlg = wx.FileDialog(
self,
message="Save plot as...",
message="Save Plot as...",
defaultDir=os.getcwd(),
defaultFile="plot.png",
wildcard=file_choices,
style=wx.SAVE)
if dlg.ShowModal() == wx.ID_OK:
path = dlg.GetPath()
self.canvas.print_figure(path, dpi=100)
with open("output.csv", "wb") as f:
writer = csv.writer(f)
for row in self.data:
writer.writerow([row])

def on_save_csv(self, event):
file_choices = "CSV (*.csv)|*.csv"
dlg = wx.FileDialog(
self,
message="Save Data as...",
defaultDir=os.getcwd(),
defaultFile="output.csv",
wildcard=file_choices,
style=wx.SAVE | wx.OVERWRITE_PROMPT)
if dlg.ShowModal() == wx.ID_OK:
path = dlg.GetPath()
with open(path, "wb") as f:
writer = csv.writer(f)
writer.writerow([self.Mode[0], "Timestamp (ms)"])
for i in range(0, self.dataval.getlen()):
writer.writerow([self.data[i], self.timing[i]])

def setCom(self, event):
global hp
Expand All @@ -590,6 +611,20 @@ def setNPLC(self, event):
dlg.Destroy()
hp.setPlc(plc)

def setTerm(self, event):
global hp
dlg = wx.SingleChoiceDialog(self, 'Set Terminals', 'Set Terminals', ["Front", "Rear"], wx.CHOICEDLG_STYLE)
if dlg.ShowModal() == wx.ID_OK:
if self.worker is not None:
self.paused = True
time.sleep(1)
term = dlg.GetStringSelection()
hp.setTerm(term)
self.paused = False
self.id = self.id + 1
self.worker = Worker(self, self.id)
dlg.Destroy()

def on_exit(self, event):
sys.exit(0)

Expand Down
Binary file modified dmm_control.zip
Binary file not shown.

0 comments on commit 90138cb

Please sign in to comment.