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
#