diff --git a/CCDpanelsetup.py b/CCDpanelsetup.py index 9cd3360..62a235d 100644 --- a/CCDpanelsetup.py +++ b/CCDpanelsetup.py @@ -228,6 +228,10 @@ class buildpanel(tk.Frame): def jfsAddOns(self,CCDplot): + def darkline(): + if (self.jf.do_save_darkline(config.rxData16)==1): + self.jfsdark_check.config(state=tk.NORMAL) + self.jfstitel = tk.Label(self, text=' Photometer ') #self.jfstitel.config(font=("Courier",0)) self.jfstitel.grid(row=10,column=4,columnspan=2) @@ -235,6 +239,10 @@ class buildpanel(tk.Frame): self.jfs4cal.grid(row=11,column=4) self.jfs4nm_check = tk.Checkbutton(self,text="[nm] scale on/off",variable=self.jf.nm_checked,command=lambda CCDplot=CCDplot: self.updateplot(CCDplot)) self.jfs4nm_check.grid(row=12,column=4) + self.jfs4cal = tk.Button(self,text='save Darkline',fg="blue", command= darkline) + self.jfs4cal.grid(row=13,column=4) + self.jfsdark_check = tk.Checkbutton(self,text="Darkline on/off",variable=self.jf.darkline_checked,state=tk.DISABLED,command=lambda CCDplot=CCDplot: self.updateplot(CCDplot)) + self.jfsdark_check.grid(row=14,column=4) ### Callbacks for traces, buttons, etc ### def callback(self): @@ -311,10 +319,14 @@ class buildpanel(tk.Frame): def updateplot(self, CCDplot): #This subtracts the ADC-pixel from ADC-dark if (config.datainvert==1): - config.pltData16 = (config.rxData16[10]+config.rxData16[11])/2 - config.rxData16 + if (self.jf.get_darkline_checked()==1): + config.pltData16 = self.jf.darkData16 - config.rxData16 + else: + config.pltData16 = (config.rxData16[10]+config.rxData16[11])/2 - config.rxData16 #This subtracts the average difference between even and odd pixels from the even pixels if (config.balanced==1): config.offset = (config.pltData16[18]+config.pltData16[20]+config.pltData16[22]+config.pltData16[24]-config.pltData16[19]-config.pltData16[21]-config.pltData16[23]-config.pltData16[24])/4 + #print(config.offset) for i in range (1847): config.pltData16[2*i] = config.pltData16[2*i] - config.offset CCDplot.a.clear() diff --git a/JFSphoto.py b/JFSphoto.py index aaa9603..6ff92ae 100644 --- a/JFSphoto.py +++ b/JFSphoto.py @@ -25,7 +25,11 @@ class Jfsphoto (object): ########## nm scale checkButton default nm-scale is off self.nm_checked = tk.IntVar() self.nm_checked.set(0) - + ########## darkline + self.darkData16 = np.zeros(3694, np.float32) + self.darkline_checked = tk.IntVar() + self.darkline_checked.set(0) + def do_calibrate(self): win = tk.Toplevel() win.geometry("450x200+100+100") @@ -71,6 +75,27 @@ class Jfsphoto (object): win.grab_set() win.wait_window() + def do_msg(self,txt): + self.mroot = tk.Tk() + self.mroot.minsize(100,50) + self.mroot.title(" Info ") + self.label = tk.Label(self.mroot, text=txt,bg="yellow",fg="blue") + self.label.pack() + self.button = tk.Button(self.mroot, text='OK', width=25, command=self.mroot.destroy) + self.button.pack() + self.mroot.mainloop() + + def do_save_darkline(self,dark): + x = np.min(dark) + if (x < 3700): + self.do_msg(" This is not a Darkline ") + return 0 + else : + self.darkData16 = dark*1.0 + return 1 + + def get_darkline_checked(self): + return self.darkline_checked.get() def checkit(self): self.nm = int(self.tnm.get()) diff --git a/config.py b/config.py index bff3369..fc2e392 100644 --- a/config.py +++ b/config.py @@ -2,7 +2,7 @@ import numpy as np #serial definitions -port = 'COM3' #'/dev/ttyACM0' +port = 'COM7' #'/dev/ttyACM0' baudrate = 115200 #Data as the program handles @@ -17,7 +17,7 @@ stopsignal = 0 #Data arrays for received bytes rxData8 = np.zeros(7388, np.uint8) rxData16 = np.zeros(3694, np.uint16) -pltData16 = np.zeros(3694, np.uint16) +pltData16 = np.zeros(3694, np.float32) #Arrays for data to transmit txsh = np.uint8([0,0,0,0])