Changeset 691 in ETALON for CLIO


Ignore:
Timestamp:
May 10, 2017, 9:13:34 PM (7 years ago)
Author:
delerue
Message:

CLIO control updated

Location:
CLIO/control
Files:
16 added
4 deleted
5 edited

Legend:

Unmodified
Added
Removed
  • CLIO/control/CLIO_graphical_interface.py

    r639 r691  
    1414import glob
    1515import os
    16 
    17 from motor_function import *
     16import subprocess
     17
     18#from motor_function import *
    1819
    1920global basedir
     
    2122global FILE_PAUSE
    2223global data_directory
    23 
    24 import clio_constants
    25 
     24global code_directory
     25
     26from clio_constants import *
     27
     28INSERTED_VALUE1=4000000
     29INSERTED_VALUE2=5000000
    2630
    2731threshold_recent=   20
     
    3034ImagesDisplaySize=(600,400)
    3135
    32 MOTOR_NUMBER=1;
     36PROCESSES_REFRESH_INTERVAL=10
    3337
    3438imageNames=[]
     
    3640imageNames.append(code_directory+"no_data.png")
    3741
     42#This is used for variables that are not updated on each refresh cycle
     43
    3844class MainWindow(Frame):
    3945
     
    5157    #----------------       
    5258        self.terminate=0
     59        self.refresh_loop=0
    5360        print(data_directory)
    5461        # canvas for image
     
    100107        buttonRetractFull = Button(self.frameMotors, text="Retract completely", command=self.onButtonRetract)
    101108        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)
    104111        buttonBackward20k = Button(self.frameMotors, text="Backward 20k", command=self.onButtonBkd20k)
    105112        buttonBackward20k.grid(row=1,column=1)
     
    114121        buttonForward1m = Button(self.frameMotors, text="Forward 1M", command=self.onButtonFwd1m)
    115122        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)
    118127     
     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)
    119145       
    120146        #Exit
     
    124150        self.update_clock()
    125151        self.motorUpdateErrors=0;
    126         self.getMotorPosition(1)
     152        self.getMotorPosition()
    127153
    128154
    129155    def update_clock(self):
     156        self.refresh_loop=self.refresh_loop+1
    130157        now = time.strftime("%d/%m/%Y %H:%M:%S")
    131158        self.clock.config(text=now,bg='green')
     
    174201            imageNames[0]=latest_file_with_signal.replace(".sig","_zoom.png")
    175202            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")
    177208            self.imageLabel2.configure(image=self.newImage2)
    178209            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")
    181215        self.imageLabel1.configure(image=self.newImage1)
    182216        self.imageLabel1.image=self.newImage1
    183217
    184 
     218        self.getMotorPosition()
    185219        #Check acquisition status
    186220        stop_file = glob.glob(FILE_STOP)
     
    194228        else:
    195229            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               
    197281        self.update_idletasks()
    198282        if self.terminate==0:
     
    200284
    201285
    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');
    226312               
    227313    #----------------
    228314    def onButtonRetract(self):
    229315        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');
    242329
    243330    def moveMotor(self,direction,step):
    244         print "Move motor ",direction,"  ",step       
    245331        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');
    252337   
    253338    #----------------
  • CLIO/control/clio_constants.py

    r639 r691  
    1818global motor_controller_port
    1919global write_to_motor_dated_log
    20 
    21 
     20global motor_position_info
     21#global motor_position_save
     22global motor_position_request
     23global code_directory
    2224
    2325# detecting on which computer the code is running
     
    4345    FILE_PAUSE=basedir+'acquisition_data/pause_acquisition';
    4446    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';
    4549    data_directory_base="/var/www/html/CLIO/"
    4650#    data_dir="/home/etalon-admin/acquisition_data"   
     
    5256    FILE_PAUSE=basedir+'acquisition_data/pause_acquisition';
    5357    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';
    5460#    data_directory_base="/var/www/html/CLIO/"
    5561    data_directory_base='/Users/delerue/Downloads/CLIO_tmp/'
     
    8490
    8591write_to_motor_dated_log = data_directory + "clio_write_to_motor_dated_log"
     92#motor_position_save=data_directory + "motor_position.txt';
    8693
    8794data_dir=data_directory
  • CLIO/control/initialise_motors.py

    r639 r691  
    2424    return ret
    2525
     26def 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   
    2652
    2753def motor_send(message, verbose=VERBOSE_DEFAULT):
    2854    "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, '<')
    3157    while len(message) < 12:
    3258        message += '0'
     59#    print('Message length ', len(message), ' >', message, '<')
    3360    if len(message) <= 12:
    3461        return write_to_motor(message, verbose)
     
    125152        return deceleration[3:12]
    126153    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]
    132161    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
    143192    elif (param == 'current'):
    144193        actual_position = motor_send('CUR0?')
     
    219268    "Sends ca_va query to the motor and display reply"
    220269    #    write_to_motor("ça_va?",1)
    221     ret=write_to_motor(chr(231) + "a_va?", 1)
     270    ret=write_to_motor("ca_va?", 0)
    222271    print "controller returned: ",ret
    223272    return ret
  • CLIO/control/read_plot_data.py

    r639 r691  
     1<<<<<<< .mine
     2# -*- coding: utf-8 -*-
     3"""
     4Created on Mon Feb  6 15:47:25 2017
     5
     6@author: delerue
     7"""
     8
     9
     10import numpy as np
     11import matplotlib.pyplot as plt
     12#from time import sleep
     13from shutil import copyfile
     14import os.path
     15
     16
     17def 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=======
    1262# -*- coding: utf-8 -*-
    2263"""
     
    249510#read_plot_data('/Users/delerue/Downloads/CLIO_tmp/20170227/data_CLIO_2017-02-27_12-43-46.txt')
    250511#HWaddr 64:00:6a:3a:6f:1c
     512>>>>>>> .r690
  • CLIO/control/writeclient.py

    r628 r691  
    2222    s.sendall(msg)
    2323    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       
    2531    s.close()
    2632    if (logfile!=''):
Note: See TracChangeset for help on using the changeset viewer.