App-sersh

 view release on metacpan or  search on metacpan

sersh  view on Meta::CPAN

    }
    my $hist_file      = $cfg_dir->file('.sersh_history');
    my @histfile_lines = $hist_file->slurp();
    if (@histfile_lines > $HISTSIZE_MAX) {
        splice(@histfile_lines, 0, (@histfile_lines - $HISTSIZE_MAX));
        $hist_file->spew(\@histfile_lines);
    }
    @histfile_lines = map {chomp($_); $_;} @histfile_lines;

    my $run_cv        = AnyEvent->condvar;
    my $prompt_prefix = $serial_fn . "> ";

    my $serial_ae = AnyEvent::SerialPort->new(
        serial_port => [
            $serial_fn,
            [baudrate  => $baudrate],
            [parity    => $parity],
            [databits  => $databits],
            [stopbits  => $stopbits],
            [handshake => $handshake],
        ],

sersh  view on Meta::CPAN

    # print data from serial
    $serial_ae->on_read(
        sub {
            my ($hdl) = @_;
            AnyEvent::ReadLine::Gnu->print($hdl->rbuf);
            $hdl->rbuf = '';
        }
    );

    my $term_rl = AnyEvent::ReadLine::Gnu->new(
        prompt  => $prompt_prefix,
        on_line => sub {
            my ($line) = @_;

            # EOF
            if (!defined($line)) {
                AnyEvent::ReadLine::Gnu->print("\n");
                $run_cv->send;
                return;
            }

sersh  view on Meta::CPAN

    my $wt = AE::signal TERM => $term_cb;
    my $wh = AE::signal HUP  => $term_cb;

    # on Ctrl-C cancel current command
    my $wi = AE::signal INT => sub {
        my $old_text = $term_rl->Attribs->{line_buffer};
        $term_rl->modifying;
        $term_rl->delete_text;
        $term_rl->Attribs->{point} = $term_rl->Attribs->{end} = 0;
        $term_rl->redisplay;
        AnyEvent::ReadLine::Gnu->print($prompt_prefix . $old_text . "^C\n");
    };

    AnyEvent::ReadLine::Gnu->print(
        'connected to ', $serial_fn, ', baudrate: ', $baudrate, ', databits: ',  $databits,
        ', parity: ',    $parity,    ', stobits: ',  $stopbits, ', handshake: ', $handshake,
        "\n"
    );
    $run_cv->recv;

    return 0;



( run in 1.238 second using v1.01-cache-2.11-cpan-0b5f733616e )