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 #