## A script for scan with the mapping mode of xmap. # Author: Yan Fen SSRF # Modified by: Mark Rivers APS from CaChannel import * import time FastScan = 'X15U1:test:scan1' SlowScan = 'X15U1:test:scan2' ######this is should be changed SISPrefix = 'X15USIS:' FastMotor = 'X15U1:EH:MAN1:X' SlowMotor = 'X15U1:EH:MAN7:Z' xMAPPrefix = '15UdxpXMAP:' FileName = 'Scan11' ##### this is should be changed, the better way is the same as the file name of savedata FastSpeed = 1.0 SlowSpeed = 0.15 NumSlow=CaChannel() NumFast=CaChannel() xmapPixels=CaChannel() sisEraseStart=CaChannel() sisPixels=CaChannel() sisPreScale=CaChannel() xmapEraseStart=CaChannel() xmapState=CaChannel() FastScanBusy=CaChannel() netCDFSaveMode=CaChannel() netCDFNumCapture=CaChannel() netCDFEnable=CaChannel() netCDFCapture=CaChannel() netCDFFileName=CaChannel() netCDFFileNumber=CaChannel() Zmotor=CaChannel() Xmotor=CaChannel() XmotorState=CaChannel() XmotorStart=CaChannel() XmotorSpeed=CaChannel() Xstep=CaChannel() ZmotorState=CaChannel() Zstart=CaChannel() Zstep=CaChannel() sisPixels.searchw (SISPrefix+'NuseAll') sisEraseStart.searchw (SISPrefix+'EraseStart') sisPreScale.searchw (SISPrefix+'Prescale') xmapPixels.searchw (xMAPPrefix+'PixelsPerRun') xmapEraseStart.searchw (xMAPPrefix+'EraseStart') xmapState.searchw (xMAPPrefix+'Acquiring') FastScanBusy.searchw (FastScan+'.EXSC') netCDFSaveMode.searchw (xMAPPrefix+'netCDF1:FileWriteMode') netCDFNumCapture.searchw (xMAPPrefix+'netCDF1:NumCapture') netCDFEnable.searchw (xMAPPrefix+'netCDF1:EnableCallbacks') netCDFCapture.searchw (xMAPPrefix+'netCDF1:Capture') netCDFFileName.searchw (xMAPPrefix+'netCDF1:FileName') netCDFFileNumber.searchw (xMAPPrefix+'netCDF1:FileNumber') Xmotor.searchw (FastMotor+'.VAL') XmotorState.searchw (FastMotor+'.DMOV') XmotorStart.searchw (FastScan+'.P1SP') Xstep.searchw (FastScan+'.P1SI') XmotorSpeed.searchw (FastMotor+'.VELO') Zmotor.searchw (SlowMotor+'.VAL') ############## this should be changed ZmotorState.searchw (SlowMotor+'.DMOV') ############# this should be changed Zstart.searchw (SlowScan+'.P1SP')############ this should be changed Zstep.searchw (SlowScan+'.P1SI')############ this should be changed NumSlow.searchw (SlowScan+'.NPTS')############# this should be changed NumFast.searchw (FastScan+'.NPTS') # Do the things that need to be done once before the beginning of the scan ##sisPreScale.putw=Xstep.getw()*20000 nSlow = NumSlow.getw() nFast = NumFast.getw() buffPerRow = (nFast + 1)/124 + 1 netCDFNumCapture.putw(buffPerRow) netCDFFileNumber.putw(1) netCDFFileName.putw(FileName + '\0') # Need to null terminate netCDFSaveMode.putw(2) netCDFCapture.putw(1) sisPixels.putw(nFast) xmapPixels.putw(nFast) for i in range(nSlow): netCDFCapture.putw(1) XmotorSpeed.putw(FastSpeed) Xmotor.putw(XmotorStart.getw()) position=Zstart.getw()+Zstep.getw()*i print position Zmotor.putw(position) time.sleep(0.01) while XmotorState.getw()!=1 : time.sleep(0.01) XmotorSpeed.putw(SlowSpeed) while ZmotorState.getw()!=1 : time.sleep(0.01) print 'Erase SIS' sisEraseStart.putw(1) print 'Erase XMAP' xmapEraseStart.putw(1) time.sleep(0.5) print 'Start the scan' FastScanBusy.putw(1) while FastScanBusy.getw()==1: time.sleep(0.1) while xmapState.getw()==1: time.sleep(0.01) i=i+1 print i time.sleep(0.1) del NumSlow del NumFast del xmapPixels del sisEraseStart del xmapEraseStart del FastScanBusy del netCDFSaveMode del netCDFNumCapture del netCDFEnable del netCDFCapture del Zmotor del ZmotorState del Zstart del Zstep