Astro-SkyX

 view release on metacpan or  search on metacpan

lib/Astro/SkyX.pm  view on Meta::CPAN

  }

  sub sky6RASCOMTele {
    my $self = shift @_;
    return $self->{_sky6RASCOMTele};
  }

  sub sky6RASCOMTheSky {
    my $self = shift @_;
    return $self->{_sky6RASCOMTheSky};
  }

  sub sky6Raven {
    my $self = shift @_;
    return $self->{_sky6Raven};
  }

  sub sky6StarChart {
    my $self = shift @_;
    return $self->{_sky6StarChart};
  }

  sub sky6TheSky {
    my $self = shift @_;
    return $self->{_sky6TheSky};
  }

  sub sky6Utils {
    my $self = shift @_;
    return $self->{_sky6Utils};
  }

  sub sky6Web {
    my $self = shift @_;
    return $self->{_sky6Web};
  }

  sub ccdsoftCamera {
    my $self = shift @_;
    return $self->{_ccdsoftCamera};
  }

  sub ccdsoftCameraImage {
    my $self = shift @_;
    return $self->{_ccdsoftCameraImage};
  }

  sub ccdsoftAutoguiderImage {
    my $self = shift @_;
    return $self->{_ccdsoftAutoguiderImage};
  }

  sub connect {
    my ($obj,$destinationIP,$destinationPort) = @_;
    $SkyXConnection = IO::Socket::INET->new (
                                PeerAddr => $destinationIP,
                                PeerPort => $destinationPort,
                                Blocking => 0,
				autoflush => 1,
                                Proto => 'tcp',
                                Timeout => "300",
                        );
    if ( ! Scalar::Util::openhandle($SkyXConnection ) ){
      die "Unable to connect to The Sky X\n";
    }
    $SkyXConnection->autoflush(1);

    select $SkyXConnection;
    $| = 1;
    $select = IO::Select->new();
    $select->add($SkyXConnection); 
    select STDOUT;
    return 0 unless $SkyXConnection;
    return $SkyXConnection;
  }

  sub Send {
   my $signal = $SIG{INT};
   if ( IGNORECTLC ){
     $SIG{INT} = 'IGNORE';
   }
   my ($self,$sendtext) = @_;
   $sendtext =~ s/\\/\\\\/g;
   print $SkyXConnection "$sendtext\r\n";
#   print "Sending...\n$sendtext\n";
   $SkyXConnection->flush;
   $SIG{INT} = $signal;
  }

  sub Get {
    my $signal = $SIG{INT};
    if ( IGNORECTLC ){
      $SIG{INT} = 'IGNORE';
    }
    my ($self) = @_;
    my $output = undef;
    $error = "";
    while ( ! defined($output) or ($output !~ /[|].*Error = .*\./) ) {
      while ( my @read_from = $select->can_read(0) ) {
          my $data = '';
          $read_from[0]->recv($data,1024);
          $output .= $data if $data;
      }
    }
    ($output,$error) = split(/\|([^|]+)$/,$output);
    $SIG{INT} = $signal;
    return ($output);
  }

  sub getError {
    return ($error);
  }

  sub Wait {
    my ($waitsecs) = @_;
    select(undef,undef,undef,$waitsecs);
  }






( run in 1.976 second using v1.01-cache-2.11-cpan-39bf76dae61 )