def getXrecLoopShape(currentRequest): sampleID = currentRequest["sample_id"] beamline_support.set_any_epics_pv( "FAMX-cam1:MJPGZOOM:NDArrayPort", "VAL", "ROI1" ) # not the best, but I had timing issues doing it w/o a sleep for i in xrange(4): if daq_lib.abort_flag == 1: return 0 mvr("Omega", i * 30) pic_prefix = "findloopshape_" + str(i) # time.sleep(0.1) daq_utils.take_crystal_picture(filename=pic_prefix, czoom=1) comm_s = "xrec30 " + os.environ["CONFIGDIR"] + "/xrec30.txt xrec30_result.txt" os.system(comm_s) mva("Omega", face_on) os.system("cp /dev/shm/masks2_hull_0.txt loopPoints.txt") polyPoints = [] rasterPoly = None filename = "loopPoints.txt" xrec_out_file = open(filename, "r") resultLine = xrec_out_file.readline() xrec_out_file.close() tokens = string.split(resultLine) numpoints = int(tokens[0]) for i in xrange(1, len(tokens) - 1, 2): point = [tokens[i], tokens[i + 1]] correctedPoint = [daq_utils.screenPixX - int(tokens[i]), daq_utils.screenPixY - int(tokens[i + 1])] polyPoint = QtCore.QPointF(float(correctedPoint[0]), float(correctedPoint[1])) polyPoints.append(polyPoint) newLoopPoint = QtGui.QGraphicsEllipseItem(correctedPoint[0], correctedPoint[1], 3, 3) rasterPoly = QtGui.QGraphicsPolygonItem(QtGui.QPolygonF(polyPoints)) polyBoundingRect = rasterPoly.boundingRect() raster_w = int(polyBoundingRect.width()) raster_h = int(polyBoundingRect.height()) center_x = int(polyBoundingRect.center().x()) center_y = int(polyBoundingRect.center().y()) stepsizeMicrons = 30.0 # for now. rasterReqID = definePolyRaster(currentRequest, raster_w, raster_h, stepsizeMicrons, center_x, center_y, rasterPoly) return rasterReqID
def refreshGuiTree(): beamline_support.set_any_epics_pv( daq_utils.beamlineComm + "live_q_change_flag", "VAL", 1)
def lockGUI(): logger.info('locking GUI') beamline_support.set_any_epics_pv(daq_utils.beamlineComm + "zinger_flag", "VAL", -1)
def set_epics_pv_nowait(motcode,field_name,value): #just sets a pv mcode = "%s%s" % (beamline_support.beamline_designation,motcode) beamline_support.set_any_epics_pv(mcode,field_name,value)
def center_on_click(x,y,maglevel=0,source="screen",jog=0): #maglevel=0 means lowmag, high fov, #1 = himag with digizoom option, #source=screen = from screen click, otherwise from macro with full pixel dimensions if (source == "screen"): beamline_support.set_any_epics_pv(daq_utils.gonioPvPrefix+"image_X_scale","B",daq_utils.screenPixX) #these are video dimensions in the gui beamline_support.set_any_epics_pv(daq_utils.gonioPvPrefix+"image_Y_scale","B",daq_utils.screenPixY) beamline_support.set_any_epics_pv(daq_utils.gonioPvPrefix+"image_X_center","A",daq_utils.screenPixX/2) beamline_support.set_any_epics_pv(daq_utils.gonioPvPrefix+"image_Y_center","A",daq_utils.screenPixY/2) else: if (int(maglevel)==0): beamline_support.set_any_epics_pv(daq_utils.gonioPvPrefix+"image_X_scale","B",daq_utils.lowMagPixX) beamline_support.set_any_epics_pv(daq_utils.gonioPvPrefix+"image_Y_scale","B",daq_utils.lowMagPixY) beamline_support.set_any_epics_pv(daq_utils.gonioPvPrefix+"image_X_center","A",daq_utils.lowMagPixX/2) beamline_support.set_any_epics_pv(daq_utils.gonioPvPrefix+"image_Y_center","A",daq_utils.lowMagPixY/2) else: beamline_support.set_any_epics_pv(daq_utils.gonioPvPrefix+"image_X_scale","B",daq_utils.highMagPixX) beamline_support.set_any_epics_pv(daq_utils.gonioPvPrefix+"image_Y_scale","B",daq_utils.highMagPixY) beamline_support.set_any_epics_pv(daq_utils.gonioPvPrefix+"image_X_center","A",daq_utils.highMagPixX/2) beamline_support.set_any_epics_pv(daq_utils.gonioPvPrefix+"image_Y_center","A",daq_utils.highMagPixY/2) if (int(maglevel)==0): beamline_support.set_any_epics_pv(daq_utils.gonioPvPrefix+"image_X_scale","C",daq_utils.lowMagFOVx) beamline_support.set_any_epics_pv(daq_utils.gonioPvPrefix+"image_Y_scale","C",daq_utils.lowMagFOVy) else: if (beamline_support.get_any_epics_pv("FAMX-cam1:MJPGZOOM:NDArrayPort","VAL") == "ROI2"): beamline_support.set_any_epics_pv(daq_utils.gonioPvPrefix+"image_X_scale","C",daq_utils.highMagFOVx) beamline_support.set_any_epics_pv(daq_utils.gonioPvPrefix+"image_Y_scale","C",daq_utils.highMagFOVy) else: beamline_support.set_any_epics_pv(daq_utils.gonioPvPrefix+"image_X_scale","C",daq_utils.highMagFOVx/2.0) beamline_support.set_any_epics_pv(daq_utils.gonioPvPrefix+"image_Y_scale","C",daq_utils.highMagFOVy/2.0) omega_mod = beamline_lib.get_epics_motor_pos("Omega")%360.0 # daq_utils.broadcast_output("\ncenter on x = %s, y = %s, omega = %f, phi = %f\n" % (x,y,omega_mod,0)) lib_gon_center_xtal(x,y,omega_mod,0) if (jog): beamline_lib.mvr("Omega",float(jog))
def refreshGuiTree(): beamline_support.set_any_epics_pv(daq_utils.beamline+"_comm:live_q_change_flag","VAL",1)