コード例 #1
0
ファイル: daq_macros.py プロジェクト: ericdill/lsdc
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
コード例 #2
0
def refreshGuiTree():
    beamline_support.set_any_epics_pv(
        daq_utils.beamlineComm + "live_q_change_flag", "VAL", 1)
コード例 #3
0
def lockGUI():
    logger.info('locking GUI')
    beamline_support.set_any_epics_pv(daq_utils.beamlineComm + "zinger_flag",
                                      "VAL", -1)
コード例 #4
0
ファイル: beamline_lib.py プロジェクト: cowanml/lsdc
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)
コード例 #5
0
ファイル: daq_lib.py プロジェクト: cowanml/lsdc
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))
コード例 #6
0
ファイル: daq_lib.py プロジェクト: cowanml/lsdc
def refreshGuiTree():
  beamline_support.set_any_epics_pv(daq_utils.beamline+"_comm:live_q_change_flag","VAL",1)