SkÃ¥ne Sjælland Linux User Group - http://www.sslug.dk Forside   Tilmelding   Postarkiv   Forum   Kalender   Søg
MhonArc Dato: [Date Prev] [Kronologisk oversigt] [Date Next]   TrÃ¥d: [Date Prev] [Oversigt trÃ¥de] [Date Next]   MhonArc
 

Læse eventuelt input fra stdin.



Hej.

Jeg har et lille problem der har medført at jeg har skulle lave et lille
kommandolinje terminalprogram. Jeg begyndte med at finde ud af at læse fra
serielporten i et script, og derefter at skrive til porten i et andet perl
script.

Disse to scripts skulle nu gerne samles til et, men jeg mangler noget der
kan læse fra stdin. Hvis der ikke er et tegn at læse, skal den blot gå
videre i løkken.

Herunder følger programmet som det ser ud lige nu. Det jeg har brug for er
at kunne få linjen

$cc = getc();

til at hoppe videre hvis der ikke er noget input lige nu. Den skal altså
IKKE stå og vente på input.

<------------------- ./bin/sr0.pl --------------------->
#!/usr/bin/perl

use Device::SerialPort;
my $device = '/dev/ttyS0';
my $sp = Device::SerialPort->new($device) || die "Unable to open $device"=
;

$sp->baudrate(115200) || die "Unable to set baudrate";
$sp->parity("none") || die "Unable to set parity";
$sp->databits(8) || die "Unable to set databits";
$sp->stopbits(1) || die "Unable to set stopbits";
$sp->handshake("none") || die "Unable to set handshake";

$sp->write_settings || die "No settings";

$message = "Command line terminal.\r\nType CTRL-C to quit\r\n\r\n"
print $message;

$in = 1;
$sendcommand = "";
while ($in) {
  # Get input. Needs <cr> after each character.
  $cc = getc();
  if ("$cc" ne "\n") {
    $command = sprintf("%s%s", $command, $cc) if ("$cc" ne "\n");
  } else {
    $sendcommand = 1;
  }
  if ($sendcommand) {
    if ("$command" eq "quit") {
      $in = 0;
    } else {
      $command = sprintf("%s%s", $command, "^M");
      $sendcommand = 0;
      printf("Sending command: %s\n", $command);
      $written = $sp->write($command);
      printf("sent %d bytes\n", $written);
      $command = "";
    }
  }
  # Read from serial port
  $spr = $sp->read(1);
  # Write serial
  printf("%s", $spr);
}
>------------------- ./bin/sr0.pl ---------------------<


Med venlig hilsen
Bjørn Bille Højte
sslug@sslug




 
Forside   Tilmelding   Postarkiv   Oversigt   Kalender   Søg

 
 
Henvendelse vedrørende websiderne til <www_admin>. Senest ændret 2005-08-10, klokken 19:55
Denne side vedligeholdes af MHonArc .