MultipleMotors, Tango, P09

The following lines which are part of /online_dir/TkIrc.pl create a widget to operate the MotorMask of a MultipleMotor.

Figure 14.16: BLSC: MultipleMotor, P09
Image blscMultipleMotors

$Spc::res_h{ blsc} = "momu";


#
#
#
#
$Spc::res_h{ mumo_title} = { text => "MultipleMotors"};
$Spc::res_h{ mumo_help} = sub 
{ 
    Util::display_text( "Help MC", 
'
  Some Help text
'
)};

$Spc::res_h{ mumo_cmpnd} = { name => "mnchrmtr", unit => "eV"};

$Spc::res_h{ mumo_io1} = { 
    label => { name => "Analyzer"}, 
    checkbutton => { name => "Enable",  
                     set_on => sub { 
                         my $msk = Spectra::tng_attrLongRd( "mnchrmtr", "MotorMask"); 
                         $msk |= 1; 
                         Spectra::tng_attrLongWrt( "mnchrmtr", "MotorMask", $msk);}, 
                     set_off => sub { 
                         my $msk = Spectra::tng_attrLongRd( "mnchrmtr", "MotorMask"); 
                         $msk &= ~1; 
                         Spectra::tng_attrLongWrt( "mnchrmtr", "MotorMask", $msk);}, 
                     get => sub { 
                         my $msk = Spectra::tng_attrLongRd( "mnchrmtr", "MotorMask"); 
                         if( $msk & 1)
                         {
                             return 1;
                         }
                         else
                         {
                             return 0;
                         }}}}; 
$Spc::res_h{ mumo_io2} = { 
    label => { name => "Undulator"}, 
    checkbutton => { name => "Enable",  
                     set_on => sub { 
                         my $msk = Spectra::tng_attrLongRd( "mnchrmtr", "MotorMask"); 
                         $msk |= 2; 
                         Spectra::tng_attrLongWrt( "mnchrmtr", "MotorMask", $msk);}, 
                     set_off => sub { 
                         my $msk = Spectra::tng_attrLongRd( "mnchrmtr", "MotorMask"); 
                         $msk &= ~2; 
                         Spectra::tng_attrLongWrt( "mnchrmtr", "MotorMask", $msk);}, 
                     get => sub { 
                         my $msk = Spectra::tng_attrLongRd( "mnchrmtr", "MotorMask"); 
                         if( $msk & 2)
                         {
                             return 1;
                         }
                         else
                         {
                             return 0;
                         }}}}; 
#
# the motors
#  
$Spc::res_h{ mumo_m1} = { name => "EnergyFMB", unit => "eV"};
$Spc::res_h{ mumo_m2} = { name => "Analyzer", unit => "eV"};
$Spc::res_h{ mumo_m3} = { name => "Undulator", unit => "eV"};