- Timestamp:
- May 10, 2017, 9:13:34 PM (7 years ago)
- Location:
- CLIO/control
- Files:
-
- 16 added
- 4 deleted
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
CLIO/control/CLIO_graphical_interface.py
r639 r691 14 14 import glob 15 15 import os 16 17 from motor_function import * 16 import subprocess 17 18 #from motor_function import * 18 19 19 20 global basedir … … 21 22 global FILE_PAUSE 22 23 global data_directory 23 24 import clio_constants 25 24 global code_directory 25 26 from clio_constants import * 27 28 INSERTED_VALUE1=4000000 29 INSERTED_VALUE2=5000000 26 30 27 31 threshold_recent= 20 … … 30 34 ImagesDisplaySize=(600,400) 31 35 32 MOTOR_NUMBER=1; 36 PROCESSES_REFRESH_INTERVAL=10 33 37 34 38 imageNames=[] … … 36 40 imageNames.append(code_directory+"no_data.png") 37 41 42 #This is used for variables that are not updated on each refresh cycle 43 38 44 class MainWindow(Frame): 39 45 … … 51 57 #---------------- 52 58 self.terminate=0 59 self.refresh_loop=0 53 60 print(data_directory) 54 61 # canvas for image … … 100 107 buttonRetractFull = Button(self.frameMotors, text="Retract completely", command=self.onButtonRetract) 101 108 buttonRetractFull.grid(row=1,column=0) 102 buttonInsert = Button(self.frameMotors, text="Insert to signal pos.", command=self.onButtonInsert)103 buttonInsert .grid(row=2,column=0)109 buttonInsert1 = Button(self.frameMotors, text="Insert to "+str(INSERTED_VALUE1), command=self.onButtonInsert1) 110 buttonInsert1.grid(row=2,column=0) 104 111 buttonBackward20k = Button(self.frameMotors, text="Backward 20k", command=self.onButtonBkd20k) 105 112 buttonBackward20k.grid(row=1,column=1) … … 114 121 buttonForward1m = Button(self.frameMotors, text="Forward 1M", command=self.onButtonFwd1m) 115 122 buttonForward1m.grid(row=2,column=3) 116 self.labelPosition=Label(self.frameMotors,text='Status: unkown', bg='blue') 117 self.labelPosition.grid(row=3,column=0,columnspan=4) 123 self.labelPositionStepTitle=Label(self.frameMotors,text='Position (steps):', bg='grey') 124 self.labelPositionStepTitle.grid(row=3,column=0,columnspan=1) 125 self.labelPositionStep=Label(self.frameMotors,text='Status: unkown', bg='blue') 126 self.labelPositionStep.grid(row=3,column=1,columnspan=1) 118 127 128 self.labelPositionCurrentTitle=Label(self.frameMotors,text=' (current):', bg='grey') 129 self.labelPositionCurrentTitle.grid(row=3,column=2,columnspan=1) 130 self.labelPositionCurrent=Label(self.frameMotors,text='Status: unkown', bg='blue') 131 self.labelPositionCurrent.grid(row=3,column=3,columnspan=1) 132 133 134 #Check process status 135 self.frameProcesses = Frame(self.frameAllControls, borderwidth=10, relief=SUNKEN) 136 self.frameProcesses.pack(side=LEFT) 137 self.labelProcessWago=Label(self.frameProcesses,text='WAGO', bg='blue') 138 self.labelProcessWago.grid(row=0,column=0,columnspan=1) 139 self.labelProcessMotorMonitor=Label(self.frameProcesses,text='Motor monitor', bg='blue') 140 self.labelProcessMotorMonitor.grid(row=1,column=0,columnspan=1) 141 self.labelProcessSaveData=Label(self.frameProcesses,text='Savedata', bg='blue') 142 self.labelProcessSaveData.grid(row=2,column=0,columnspan=1) 143 self.labelProcessProcessRecent=Label(self.frameProcesses,text='Process recent', bg='blue') 144 self.labelProcessProcessRecent.grid(row=3,column=0,columnspan=1) 119 145 120 146 #Exit … … 124 150 self.update_clock() 125 151 self.motorUpdateErrors=0; 126 self.getMotorPosition( 1)152 self.getMotorPosition() 127 153 128 154 129 155 def update_clock(self): 156 self.refresh_loop=self.refresh_loop+1 130 157 now = time.strftime("%d/%m/%Y %H:%M:%S") 131 158 self.clock.config(text=now,bg='green') … … 174 201 imageNames[0]=latest_file_with_signal.replace(".sig","_zoom.png") 175 202 imageNames[1]=latest_file_with_signal.replace(".sig","_signal.png") 176 self.newImage2=ImageTk.PhotoImage(Image.open(imageNames[1]).resize(ImagesDisplaySize, Image.ANTIALIAS)) 203 time.sleep(0.1) 204 try: 205 self.newImage2=ImageTk.PhotoImage(Image.open(imageNames[1]).resize(ImagesDisplaySize, Image.ANTIALIAS)) 206 except: 207 print("An error occurred while opening the image") 177 208 self.imageLabel2.configure(image=self.newImage2) 178 209 self.imageLabel2.image=self.newImage2 179 180 self.newImage1=ImageTk.PhotoImage(Image.open(imageNames[0]).resize(ImagesDisplaySize, Image.ANTIALIAS)) 210 time.sleep(0.1) 211 try: 212 self.newImage1=ImageTk.PhotoImage(Image.open(imageNames[0]).resize(ImagesDisplaySize, Image.ANTIALIAS)) 213 except: 214 print("An error occurred while opening the image") 181 215 self.imageLabel1.configure(image=self.newImage1) 182 216 self.imageLabel1.image=self.newImage1 183 217 184 218 self.getMotorPosition() 185 219 #Check acquisition status 186 220 stop_file = glob.glob(FILE_STOP) … … 194 228 else: 195 229 self.labelAcquisitionStatus.config(text="Enabled", bg='green') 196 230 231 #check remote processes 232 if (self.refresh_loop%PROCESSES_REFRESH_INTERVAL==1): 233 response=os.system("ping -c 1 "+motor_controller_IP) 234 if response==0: 235 self.labelProcessWago.config(bg='green') 236 else: 237 self.labelProcessWago.config(bg='red') 238 239 if (self.refresh_loop%PROCESSES_REFRESH_INTERVAL==2): 240 filetime=0 241 iloop=0 242 while ((filetime==0)or((time.time()-filetime)>threshold_old))and(iloop<5): 243 if (iloop>0): 244 time.sleep(0.5) 245 iloop=iloop+1 246 try: 247 filetime=os.path.getctime(motor_position_info) 248 except: 249 filetime=0 250 251 if (time.time()-filetime)<threshold_recent: 252 bgcolortxt='green' 253 elif (time.time()-filetime)<threshold_old: 254 bgcolortxt='cyan' 255 else: 256 bgcolortxt='red' 257 self.labelProcessMotorMonitor.config(bg=bgcolortxt) 258 259 if (self.refresh_loop%PROCESSES_REFRESH_INTERVAL==3): 260 try: 261 response=subprocess.check_output("ps -edf | grep -v grep | grep -c savedata_CLIO",shell=True) 262 except: 263 response='0' 264 if (response[0]=='1'): 265 bgcolortxt='green' 266 else: 267 bgcolortxt='red' 268 self.labelProcessSaveData.config(bg=bgcolortxt) 269 270 if (self.refresh_loop%PROCESSES_REFRESH_INTERVAL==4): 271 try: 272 response=subprocess.check_output("ps -edf | grep -v grep | grep -c process_recent_files",shell=True) 273 except: 274 response='0' 275 if (response[0]=='1'): 276 bgcolortxt='green' 277 else: 278 bgcolortxt='red' 279 self.labelProcessProcessRecent.config(bg=bgcolortxt) 280 197 281 self.update_idletasks() 198 282 if self.terminate==0: … … 200 284 201 285 202 def getMotorPosition(self,start_updates): 203 try: 204 motor_position=motor_get(MOTOR_NUMBER, 'actual_position'); 205 print("Motor position "); 206 print(motor_position); 207 self.labelPosition.config(text=motor_position); 208 self.labelPosition.config(bg='green'); 209 self.motorUpdateErrors=0; 210 except: 211 time.sleep(1) 212 print "Error while reading the motor position" 213 time.sleep(1) 214 motor_position=-1; 215 if (self.motorUpdateErrors>10): 216 self.labelPosition.config(bg='blue'); 217 if (self.motorUpdateErrors>30): 218 self.labelPosition.config(bg='red'); 219 self.motorUpdateErrors=self.motorUpdateErrors+1; 220 if ((self.terminate==0)and(start_updates==1)): 221 print "No Motor position update" 222 print "start_updates" 223 print start_updates 224 #self.after(1000, self.getMotorPosition(1)) 225 286 287 def getMotorPosition(self): 288 if (len(glob.glob(motor_position_info))>0): 289 fid=open(motor_position_info,'r') 290 fileline=fid.readline() 291 key_values={} 292 while len(fileline)>0: 293 #print fileline 294 entries=fileline.replace('#','').replace(' ','').replace('\n','').split('=') 295 key_values[entries[0]]=entries[1] 296 fileline=fid.readline() 297 fid.close() 298 if key_values['motor_value']: 299 self.labelPositionStep.config(text=key_values['motor_value']); 300 self.labelPositionStep.config(bg='green'); 301 else: 302 self.labelPositionStep.config(bg='red'); 303 304 if key_values['current_value']: 305 self.labelPositionCurrent.config(text=key_values['current_value']); 306 self.labelPositionCurrent.config(bg='green'); 307 else: 308 self.labelPositionCurrent.config(bg='red'); 309 else: 310 self.labelPositionCurrent.config(bg='blue'); 311 self.labelPositionStep.config(bg='blue'); 226 312 227 313 #---------------- 228 314 def onButtonRetract(self): 229 315 print "Move motor Retract" 230 motor_move_absolute(MOTOR_NUMBER,10000,0) 231 self.getMotorPosition(0) 232 time.sleep(2) 233 self.getMotorPosition(0) 234 235 def onButtonInsert(self): 236 print "Move motor Insert" 237 motor_move_absolute(MOTOR_NUMBER,10000,7200000) 238 self.getMotorPosition(0) 239 time.sleep(2) 240 self.getMotorPosition(0) 241 316 fid=open(motor_position_request,'w') 317 fid.write("abs0;\n") 318 self.labelPositionCurrent.config(bg='cyan'); 319 self.labelPositionStep.config(bg='cyan'); 320 fid.close() 321 322 def onButtonInsert1(self): 323 print "Move motor Insert "+str(INSERTED_VALUE1) 324 fid=open(motor_position_request,'w') 325 fid.write("abs"+str(INSERTED_VALUE1)+";\n") 326 fid.close() 327 self.labelPositionCurrent.config(bg='cyan'); 328 self.labelPositionStep.config(bg='cyan'); 242 329 243 330 def moveMotor(self,direction,step): 244 print "Move motor ",direction," ",step245 331 if ((direction!=0)and(step>0)): 246 motor_move_relative(MOTOR_NUMBER,10000,direction*step) 247 self.getMotorPosition(0) 248 time.sleep(2) 249 self.getMotorPosition(0) 250 time.sleep(2) 251 self.getMotorPosition(0) 332 fid=open(motor_position_request,'w') 333 fid.write("rel"+str(direction*step)+";\n") 334 fid.close() 335 self.labelPositionCurrent.config(bg='cyan'); 336 self.labelPositionStep.config(bg='cyan'); 252 337 253 338 #---------------- -
CLIO/control/clio_constants.py
r639 r691 18 18 global motor_controller_port 19 19 global write_to_motor_dated_log 20 21 20 global motor_position_info 21 #global motor_position_save 22 global motor_position_request 23 global code_directory 22 24 23 25 # detecting on which computer the code is running … … 43 45 FILE_PAUSE=basedir+'acquisition_data/pause_acquisition'; 44 46 FILE_STOP=basedir+'acquisition_data/stop_acquisition'; 47 motor_position_info=basedir+'acquisition_data/motor_position.txt'; 48 motor_position_request=basedir+'acquisition_data/motor_requested_position.txt'; 45 49 data_directory_base="/var/www/html/CLIO/" 46 50 # data_dir="/home/etalon-admin/acquisition_data" … … 52 56 FILE_PAUSE=basedir+'acquisition_data/pause_acquisition'; 53 57 FILE_STOP=basedir+'acquisition_data/stop_acquisition'; 58 motor_position_info=basedir+'acquisition_data/motor_position.txt'; 59 motor_position_request=basedir+'acquisition_data/motor_requested_position.txt'; 54 60 # data_directory_base="/var/www/html/CLIO/" 55 61 data_directory_base='/Users/delerue/Downloads/CLIO_tmp/' … … 84 90 85 91 write_to_motor_dated_log = data_directory + "clio_write_to_motor_dated_log" 92 #motor_position_save=data_directory + "motor_position.txt'; 86 93 87 94 data_dir=data_directory -
CLIO/control/initialise_motors.py
r639 r691 24 24 return ret 25 25 26 def motor_send_float(message, sendType=0,verbose=VERBOSE_DEFAULT): 27 itry=0 28 result='' 29 value=-1 30 valueOK=0 31 while((itry<5)and((len(result)<2)or(valueOK==0))): 32 itry+=1 33 try: 34 if (sendType==0): 35 result=motor_send(message, verbose=verbose) 36 else: 37 result=write_to_motor(message) 38 39 if ((result[2] == 'p')or(result[2] == 'c')): 40 isign = -1 41 else: 42 isign = 1 43 44 value=isign*float(result[3:12]) 45 valueOK=1 46 except: 47 print 'Result with error '+result 48 valueOK=0 49 result='' 50 return value 51 26 52 27 53 def motor_send(message, verbose=VERBOSE_DEFAULT): 28 54 "Writes a formatted message to a motor" 29 if (len(message) <= 12):30 print('Message length ', len(message), ' >', message, '<')55 # if (len(message) <= 12): 56 # print('Message length ', len(message), ' >', message, '<') 31 57 while len(message) < 12: 32 58 message += '0' 59 # print('Message length ', len(message), ' >', message, '<') 33 60 if len(message) <= 12: 34 61 return write_to_motor(message, verbose) … … 125 152 return deceleration[3:12] 126 153 elif (param == 'actual_speed'): 127 actual_speed = motor_send(motor + 'QC') 128 isign = 1 129 if actual_speed[2] == 'c': 130 isign = -1 131 return isign * actual_speed[3:12] 154 actual_speed_float = motor_send_float(motor + 'QC') 155 return actual_speed_float 156 # actual_speed = motor_send(motor + 'QC') 157 # isign = 1 158 # if actual_speed[2] == 'c': 159 # isign = -1 160 # return isign * actual_speed[3:12] 132 161 elif (param == 'actual_position'): 133 actual_position = motor_send(motor + 'QP') 134 if actual_position[2] == 'p': 135 isign = -1 136 else: 137 isign = 1 138 print actual_position[2:13] 139 print actual_position[3:12] 140 pos = isign * float(actual_position[3:12]) 141 print 'actual position=', pos 142 return pos 162 actual_position_float = motor_send_float(motor + 'QP') 163 print 'actual position=', actual_position_float 164 return actual_position_float 165 # itry=0 166 # actual_position = None 167 # actual_position = '' 168 # while ((itry<5)and((len(actual_position)<100)or(ord(actual_position[0])<20))): 169 # actual_position = motor_send(motor + 'QP') 170 # itry+=1 171 172 # if actual_position[2] == 'p': 173 # isign = -1 174 # else: 175 # isign = 1 176 # pos = isign * float(actual_position[3:12]) 177 # print 'actual position=', pos 178 # return pos 179 elif (param == 'current'): 180 motor_current_float = motor_send_float('cur0?',verbose=1,sendType=1) 181 # itry=0 182 # motor_current = '' 183 # while ((itry<5)and(len(motor_current)<10)): 184 # itry+=1 185 # motor_current = write_to_motor('cur0?',0) 186 # try: 187 # pos = float(motor_current[3:12]) 188 # except: 189 # motor_current = '' 190 print 'current=', motor_current_float 191 return motor_current_float 143 192 elif (param == 'current'): 144 193 actual_position = motor_send('CUR0?') … … 219 268 "Sends ca_va query to the motor and display reply" 220 269 # write_to_motor("ça_va?",1) 221 ret=write_to_motor( chr(231) + "a_va?", 1)270 ret=write_to_motor("ca_va?", 0) 222 271 print "controller returned: ",ret 223 272 return ret -
CLIO/control/read_plot_data.py
r639 r691 1 <<<<<<< .mine 2 # -*- coding: utf-8 -*- 3 """ 4 Created on Mon Feb 6 15:47:25 2017 5 6 @author: delerue 7 """ 8 9 10 import numpy as np 11 import matplotlib.pyplot as plt 12 #from time import sleep 13 from shutil import copyfile 14 import os.path 15 16 17 def read_plot_data(filename): 18 #Definitions 19 nchannels=32 20 21 #electron_signal 22 electrons_channel=26 23 electrons_signal_scaling=0.05 24 electrons_threshold=-50 25 electrons_half_width=1 26 27 data_start=1 28 data_length=7035 29 electron_pretrig=5 30 # electron_trig_stop=500 31 electron_trig_stop=20 32 electron_post_trig_integration_start=1 33 electron_post_trig_integration_stop=500 34 35 #position signal 36 position_channel=28 37 38 #channels mapping 39 #channels_mapping=[17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27] 40 data_mapping=[ 0, 111, 83, 76, 48, 41 55, 104, 69, 62, 0, 42 97, 90, 0, 118, 0, 43 0, 125, 0, 0, 0, 44 0, 0, 0, 0, 0, 45 0, 0, 0, 0, 0, 46 0, 0 ] 47 48 49 #code 50 angles_sorted=[] 51 idx_angles_sorted=[] 52 idx_data_mapping=np.zeros(len(data_mapping),dtype=np.int) 53 54 for angle in np.sort(data_mapping): 55 if angle>0: 56 if len(angles_sorted)==0: 57 angles_sorted=[angle] 58 idx_angles_sorted=[data_mapping.index(angle)] 59 else: 60 angles_sorted.append(angle) 61 idx_angles_sorted.append(data_mapping.index(angle)) 62 idx_data_mapping[data_mapping.index(angle)]=int(len(angles_sorted)) 63 64 key_values={} 65 if (len(os.path.dirname(filename))==0): 66 filename="./"+filename 67 68 with open(filename,'r') as fid: 69 fileline=fid.readline() 70 while (len(fileline)>0)and(fileline[0]=='#'): 71 entries=fileline.replace('#','').replace(' ','').replace('\n','').split('=') 72 key_values[entries[0]]=entries[1] 73 fileline=fid.readline() 74 fid.close() 75 76 print(key_values) 77 78 alldata=np.loadtxt(filename, dtype='int32', comments='#', delimiter=' ', usecols=range(0,nchannels), converters={ _:lambda s: int(s , 16) for _ in range(0,nchannels) }) 79 80 #converting the data in the correct format 81 alldata=alldata%(2**16) 82 alldata=(2**15)-alldata 83 data_scaling_factor=(float(key_values['amplitude'])*5.)/(2.**15) 84 time_scaling_factor=(36./float(key_values['acquisition_rate']))*1.e-3 85 86 #Looking for electrons 87 electrons_found=False 88 if (min(alldata[:,electrons_channel])<electrons_threshold): 89 elec=alldata[:,electrons_channel] 90 pos_elec=elec.argmin() 91 while ((pos_elec>100)and(elec[pos_elec]<electrons_threshold)): 92 pos_elec=pos_elec-1 93 if ((elec[pos_elec+electrons_half_width]<electrons_threshold)or(elec[pos_elec-electrons_half_width]<electrons_threshold)): 94 electrons_found=True 95 electron_data_start=pos_elec-electron_pretrig 96 electron_data_stop=pos_elec+electron_trig_stop 97 print('electrons found') 98 99 #Mean position value 100 # mean_position=np.mean(alldata[:,electrons_channel]) 101 # print('Mean position: ', mean_position) 102 # filename_position=filename.replace('.txt','.pos') 103 # fid=open(filename_position,'w') 104 # fid.write("pos: "+str(round(mean_position,3))) 105 # fid.close() 106 107 108 #prepare the figures 109 fig=plt.figure(1,figsize=(12, 8)) 110 if electrons_found: 111 figzoom=plt.figure(2,figsize=(12, 8)) 112 figsignal=plt.figure(3,figsize=(12, 8)) 113 datasignal=np.zeros(len(angles_sorted)) 114 filename_zoom_txt=filename.replace('.txt','.zoom_txt') 115 fidz=open(filename_zoom_txt,'w') 116 for jdata in range(electron_data_start,electron_data_stop): 117 fidz.write(str(jdata*time_scaling_factor)) 118 fidz.write(" ") 119 fidz.write("\n") 120 121 122 for idata in range(0,nchannels-1): 123 this_data_scaling_factor=data_scaling_factor*-1 124 txtline='r' 125 if idata%12==0: 126 txtline='b' 127 if data_mapping[idata] >0: 128 txtline='r' 129 else: 130 txtline='b' 131 132 linestyle='-' 133 if idata==electrons_channel: 134 txtline='k' 135 this_data_scaling_factor=this_data_scaling_factor*electrons_signal_scaling 136 137 if ((idata!=position_channel)and(idata!=22)and(idata!=21)): 138 # data_start=9022 139 # data_length=9035 140 plt.figure(1) 141 plt.plot(np.arange(data_start,data_length)*time_scaling_factor,alldata[range(data_start,data_length),idata].astype(np.float)*this_data_scaling_factor, txtline+linestyle) 142 # plt.show() 143 144 if (electrons_found): 145 plt.figure(2) 146 this_channel_baseline=0 147 baseline_offset=100 148 baseline_length=100 149 if (pos_elec>1000): 150 this_channel_baseline=np.mean(alldata[range(electron_data_start-baseline_offset-baseline_length,electron_data_stop-baseline_offset),idata]) 151 this_channel_baseline_rms=np.std(alldata[range(electron_data_start-baseline_offset-baseline_length,electron_data_stop-baseline_offset),idata])*-1 152 else: 153 this_channel_baseline=np.mean(alldata[range(electron_data_start+baseline_offset,electron_data_stop+baseline_offset+baseline_length),idata]) 154 this_channel_baseline_rms=np.sqrt(np.std(alldata[range(electron_data_start+baseline_offset,electron_data_stop+baseline_offset+baseline_length),idata]))*-1 155 156 plt.plot(np.arange(electron_data_start,electron_data_stop)*time_scaling_factor,(alldata[range(electron_data_start,electron_data_stop),idata].astype(np.float)-this_channel_baseline)*this_data_scaling_factor, txtline+linestyle) 157 plt.plot(np.arange(electron_data_start,electron_data_stop)*time_scaling_factor,np.zeros(len(range(electron_data_start,electron_data_stop)))+(this_channel_baseline_rms*this_data_scaling_factor), txtline+":") 158 for jdata in range(electron_data_start,electron_data_stop): 159 fidz.write('{:06.5e}'.format((alldata[jdata,idata].astype(np.float)-this_channel_baseline)*this_data_scaling_factor)) 160 fidz.write(" ") 161 fidz.write("\n") 162 163 if data_mapping[idata]>0: 164 plt.figure(3) 165 txtline=txtline+'^' 166 # datasignal[idx_data_mapping[idata]-1]=np.mean(alldata[range(pos_elec+electron_post_trig_integration_start,pos_elec+electron_post_trig_integration_stop),idata].astype(np.float)-this_channel_baseline)*this_data_scaling_factor 167 datasignal[idx_data_mapping[idata]-1]=np.mean(alldata[range(pos_elec+electron_post_trig_integration_start,pos_elec+electron_post_trig_integration_stop),idata].astype(np.float)-this_channel_baseline)*this_data_scaling_factor 168 plt.plot(data_mapping[idata], -1*datasignal[idx_data_mapping[idata]-1], txtline+linestyle) 169 170 plt.figure(1) 171 plt.title(key_values['date']+ ' --- Motor value: '+key_values['motor_value']+ ' --- Current: '+key_values['current_value']) 172 plt.ylabel('Signal amplitude [V]') 173 plt.xlabel('Time [ms]') 174 plt.grid(True) 175 imagename=filename.replace('.txt','.png') 176 print(imagename) 177 fig.savefig(imagename) 178 plt.close(fig) 179 imagename_no_path=os.path.basename(imagename) 180 fid=open('list.html','a'); 181 fid.write("<A HREF=") 182 fid.write(imagename_no_path) 183 fid.write("><IMG SRC=") 184 fid.write(imagename_no_path) 185 fid.write(" width=600>") 186 fid.write("</A><BR/>") 187 fid.write(imagename_no_path) 188 fid.write("<BR/><BR/>\n") 189 fid.close() 190 copyfile(imagename,os.path.dirname(imagename)+'/last.png') 191 192 if (electrons_found): 193 fidz.close() 194 plt.figure(2) 195 plt.title(key_values['date']+ ' --- Motor value: '+key_values['motor_value']+ ' --- Current: '+key_values['current_value']) 196 plt.ylabel('Signal amplitude [V] - pedestal removed') 197 plt.xlabel('Time [ms]') 198 plt.grid(True) 199 imagenamezoom=filename.replace('.txt','_zoom.png') 200 figzoom.savefig(imagenamezoom) 201 plt.close(figzoom) 202 copyfile(imagenamezoom,os.path.dirname(imagename)+'/last_zoom.png') 203 204 imagenamezoom_no_path=os.path.basename(imagenamezoom) 205 fid=open('zoom_list.html','a'); 206 fid.write("<A HREF=") 207 fid.write(imagenamezoom_no_path) 208 fid.write("><IMG SRC=") 209 fid.write(imagenamezoom_no_path) 210 fid.write(" width=600>") 211 fid.write("</A><BR/>") 212 fid.write(imagenamezoom_no_path) 213 fid.write("<BR/><BR/>\n") 214 fid.close() 215 216 plt.figure(3) 217 plt.plot(angles_sorted,-1*datasignal,'b--') 218 plt.title(key_values['date']+ ' --- Motor value: '+key_values['motor_value']+ ' --- Current: '+key_values['current_value']) 219 plt.ylabel('Signal amplitude [V]') 220 plt.xlabel('Detector angle (degree)') 221 plt.grid(True) 222 imagenamesignal=filename.replace('.txt','_signal.png') 223 figsignal.savefig(imagenamesignal) 224 plt.close(figsignal) 225 copyfile(imagenamesignal,os.path.dirname(imagename)+'/last_signal.png') 226 227 228 filenamesig=filename.replace('.txt','.sig') 229 fid=open(filenamesig,'w'); 230 for idata in range(0,len(datasignal)): 231 fid.write(str(angles_sorted[idata])+" "+str(datasignal[idata])+"\n") 232 fid.write("\n") 233 fid.close() 234 235 filenameval=filename.replace('.txt','.val') 236 fid=open(filenameval,'w'); 237 for key in key_values: 238 fid.write(key+" = "+key_values[key]+" \n"); 239 fid.close() 240 241 imagenamesignal_no_path=os.path.basename(imagenamesignal) 242 fid=open('signal_list.html','a'); 243 fid.write("<A HREF=") 244 fid.write(imagenamesignal_no_path) 245 fid.write("><IMG SRC=") 246 fid.write(imagenamesignal_no_path) 247 fid.write(" width=600>") 248 fid.write("</A><BR/>") 249 fid.write(imagenamesignal_no_path) 250 fid.write("<BR/><BR/>\n") 251 fid.close() 252 253 return; 254 255 256 #read_plot_data('/Users/delerue/Downloads/CLIO/data_CLIO_2017-02-08_17-26-53.txt') 257 #read_plot_data('/Users/delerue/Downloads/CLIO_tmp/20170227/data_CLIO_2017-02-27_12-01-14.txt') 258 #read_plot_data('/Users/delerue/Downloads/CLIO_tmp/20170227/data_CLIO_2017-02-27_12-43-46.txt') 259 #HWaddr 64:00:6a:3a:6f:1c 260 ||||||| .r0 261 ======= 1 262 # -*- coding: utf-8 -*- 2 263 """ … … 249 510 #read_plot_data('/Users/delerue/Downloads/CLIO_tmp/20170227/data_CLIO_2017-02-27_12-43-46.txt') 250 511 #HWaddr 64:00:6a:3a:6f:1c 512 >>>>>>> .r690 -
CLIO/control/writeclient.py
r628 r691 22 22 s.sendall(msg) 23 23 time.sleep(waittime) 24 data = s.recv(1024) 24 data='' 25 dataPart = s.recv(1024) 26 data=data+dataPart 27 while len(dataPart)==1024: 28 dataPart = s.recv(1024) 29 data=data+dataPart 30 25 31 s.close() 26 32 if (logfile!=''):
Note: See TracChangeset
for help on using the changeset viewer.