SkÃ¥ne Sjælland Linux User Group - http://www.sslug.dk Förstasida   Anmälning   Postarkiv   Forum   Kalender   Sök
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




 
Förstasida   Anmälning   Postarkiv   Översikt   Kalender   Sök

 
 
Fel och synpunkter angående webb-sidorna skickas till <www_admin>. Senaste ändring 2005-08-10, klockan 19:55
Denna sidan underholds av MHonArc .