Roper QuadRO

This section displays the beamline specific code for the Roper QuadRO and the resulting widget.

$Spc::res_h{ blsc} = "roper";
#
# Start of Roper package
#
# title
$Spc::res_h{ roper_title} = { text => "Roper"}; 
$Spc::res_h{ roper_help}  = sub { Util::display_text( "Help MC", ' Some Help text') };

# io1
$Spc::res_h{ "roper_io1"} = { 
    label => { name => "ExposureTime [s]", 
                get => sub { Spectra::tng_attrDoubleRd( "roper", "ExposureTime");},
                unit => ""},
     entry => { set => sub { while(Spectra::tng_state( "roper") == 10) # Wait Roper to finish
			     {
				 Spectra::wait(0.1);
			     }
			     Spectra::tng_state( "roper");
       Spectra::tng_attrDoubleWrt( "roper", "ExposureTime", $_[0]);}}};

# io2
$Spc::res_h{ "roper_io2"} = { 
    label => { name => "NbFrames", 
                get => sub { Spectra::tng_attrLongRd( "roper", "NbFrames");}, #}};
                unit => ""},
     entry => { set => sub { while(Spectra::tng_state( "roper") == 10) # Wait Roper to finish
			     {
				 Spectra::wait(0.1);
			     }
			     Spectra::tng_state( "roper");
			     Spectra::tng_attrLongWrt( "roper", "NbFrames", $_[0]);}}};

# io3
$Spc::res_h{ "roper_io3"} = { 
    label => { name => "FilePrefix", 
	       get => sub { my $ret = Spectra::tng_attrStringRd( "roper", "FilePrefix");
#			    $ret =~ s/^\s*(.*?)\s*$/$1/;
			    return $ret;},
                unit =>  ""},
     entry => { set => sub { while(Spectra::tng_state( "roper") == 10) # Wait Roper to finish
			     {
				 Spectra::wait(0.1);
			     }
			     Spectra::tng_state( "roper");
       Spectra::tng_attrStringWrt( "roper", "FilePrefix", $_[0]);}}};

# io4
$Spc::res_h{ "roper_io4"} = { 
    label => { name => "FileStartNum", 
	       get => sub { my $ret = Spectra::tng_attrLongRd( "roper", "FileStartNum");
			    return $ret;},
                unit =>  ""},
     entry => { set => sub { while(Spectra::tng_state( "roper") == 10) # Wait Roper to finish
			     {
				 Spectra::wait(0.10);
			     }
			     Spectra::tng_state( "roper");
       Spectra::tng_attrLongWrt( "roper","FileStartNum", $_[0]);}}};

# io5
$Spc::res_h{ "roper_io5"} = {
    label => { name => "Gain (1/2/3)",
                get => sub { Spectra::tng_attrLongRd( "roper", "Gain");},
                unit => ""},
     entry => { set => sub { while(Spectra::tng_state( "roper") == 10) # Wait Roper to finish
                             {
                                 Spectra::wait(0.1);
                             }
                             Spectra::tng_state( "roper");
       Spectra::tng_attrLongWrt( "roper", "Gain", $_[0]);}}};

# io6
$Spc::res_h{ "roper_io6"} = { 
    label => { name => "Temperature", 
                get => sub { Spectra::tng_attrFloatRd( "roper", "Temperature");},
	       unit => ""}};
# io7
$Spc::res_h{ "roper_io7"} = { 
    label => { name => "ImageCounter", 
	       get => sub { my $ret =  Spectra::tng_attrLongRd( "roper", "ImageCounter");
			    return $ret;},
	       unit =>  ""}};

# io8
$Spc::res_h{ "roper_io8"} = { 
    label => { name => "FileDir", 
	       width => 40, 
	       get => sub { Spectra::tng_state( "roper");
		  Spectra::tng_attrStringRd( "roper", "FileDir");
	     },
                unit => ""},
     entry => { set => sub { while(Spectra::tng_state( "roper") == 10) # Wait Roper to finish
			     {
				 Spectra::wait(0.10);
			     }
			     Spectra::tng_state( "roper");
			     Spectra::tng_attrStringWrt( "roper", "FileDir", $_[0]);}}};
# io9
$Spc::res_h{ "roper_io9"} = { 
    label => { name => "UseFullFrame [0/1]", 
	       get => sub { my $ret = Spectra::tng_attrLongRd( "roper", "UseFullFrame");
			    return $ret;},
                unit =>  ""},
     entry => { set => sub { while(Spectra::tng_state( "roper") == 10) # Wait Roper to finish
			     {
				 Spectra::wait(0.10);
			     }
			     Spectra::tng_state( "roper");
       Spectra::tng_attrLongWrt( "roper","UseFullFrame", $_[0]);}}};

# io10
$Spc::res_h{ "roper_io10"} = { 
    label => { name => "ROIStartParallelDir [UFF == 1, 1-4096]", 
	       get => sub { my $ret = Spectra::tng_attrUShortRd( "roper", "ROIp1");
			    return $ret;},
                unit =>  ""},
     entry => { set => sub { while(Spectra::tng_state( "roper") == 10) # Wait Roper to finish
			     {
				 Spectra::wait(0.10);
			     }
			     Spectra::tng_state( "roper");
       Spectra::tng_attrUShortWrt( "roper","ROIp1", $_[0]);}}};
# io11
$Spc::res_h{ "roper_io11"} = { 
    label => { name => "ROIEndParallelDir [UFF == 1, 1-4096]", 
	       get => sub { my $ret = Spectra::tng_attrUShortRd( "roper", "ROIp2");
			    return $ret;},
                unit =>  ""},
     entry => { set => sub { while(Spectra::tng_state( "roper") == 10) # Wait Roper to finish
			     {
				 Spectra::wait(0.10);
			     }
			     Spectra::tng_state( "roper");
       Spectra::tng_attrUShortWrt( "roper","ROIp2", $_[0]);}}};

# io12
$Spc::res_h{ "roper_io12"} = { 
    label => { name => "ROIParallelDirBin [UFF == 1]", 
	       get => sub { my $ret = Spectra::tng_attrUShortRd( "roper", "ROIpbin");
			    return $ret;},
                unit =>  ""},
     entry => { set => sub { while(Spectra::tng_state( "roper") == 10) # Wait Roper to finish
			     {
				 Spectra::wait(0.10);
			     }
			     Spectra::tng_state( "roper");
       Spectra::tng_attrUShortWrt( "roper","ROIpbin", $_[0]);}}};

# io13
$Spc::res_h{ "roper_io13"} = { 
    label => { name => "ROIStartSerialDir [UFF == 1, 1-4096]", 
	       get => sub { my $ret = Spectra::tng_attrUShortRd( "roper", "ROIs1");
			    return $ret;},
                unit =>  ""},
     entry => { set => sub { while(Spectra::tng_state( "roper") == 10) # Wait Roper to finish
			     {
				 Spectra::wait(0.10);
			     }
			     Spectra::tng_state( "roper");
       Spectra::tng_attrUShortWrt( "roper","ROIs1", $_[0]);}}};
# io14
$Spc::res_h{ "roper_io14"} = { 
    label => { name => "ROIEndSerialDir [UFF == 1, 1-4096]", 
	       get => sub { my $ret = Spectra::tng_attrUShortRd( "roper", "ROIs2");
			    return $ret;},
                unit =>  ""},
     entry => { set => sub { while(Spectra::tng_state( "roper") == 10) # Wait Roper to finish
			     {
				 Spectra::wait(0.10);
			     }
			     Spectra::tng_state( "roper");
       Spectra::tng_attrUShortWrt( "roper","ROIs2", $_[0]);}}};

# io15
$Spc::res_h{ "roper_io15"} = { 
    label => { name => "ROISerialDirBin [UFF == 1]", 
	       get => sub { my $ret = Spectra::tng_attrUShortRd( "roper", "ROIsbin");
			    return $ret;},
                unit =>  ""},
     entry => { set => sub { while(Spectra::tng_state( "roper") == 10) # Wait Roper to finish
			     {
				 Spectra::wait(0.10);
			     }
			     Spectra::tng_state( "roper");
       Spectra::tng_attrUShortWrt( "roper","ROIsbin", $_[0]);}}};

#
# Define Roper functionality buttons ('Start' & 'Transfer')
#
$Spc::res_h{ roper_b1} = { name => "Start", #Wait for roper to stop before starting
			   command => sub { while(Spectra::tng_state( "roper") == 10)
					    {
						Spectra::wait(0.1);
					      }
					    Gra_command("roperon");
					    Gra_command("osh");
					    Spectra::wait(0.05);
					    Spectra::tng_inout( "roper", "StartStandardAcq");
					    while(Spectra::tng_state( "roper") == 10)
					    {
						Spectra::wait(0.10);
					      }
					    Gra_command("csh");
					    Gra_command("roperoff");
					}};
#
# End of Roper 
#

Figure 14.24: BLSC: Roper QuadRO
Image blsc_roper