#!/usr/bin/perl
use strict;
use warnings;
use vars qw($OS_win);

# Vor allem anderen das Betriebssystem checken
BEGIN 
  {
  $OS_win = ($^O eq "MSWin32") ? 1 : 0;
  print "Perl_Vers.: $], Betriebssystem: $^O\n";   # Debug
  # das folgende geht nur innerhalb des BEGIN-Blocks 
  if ($OS_win) 
    {
    print "Lade Windows-Modul\n";
    eval "use Win32::SerialPort";
	  die "Oops: $@\n" if ($@);
    }
  else 
    {
    print "Lade Unix-Modul\n";
    eval "use Device::SerialPort";
	  die "Oops: $@\n" if ($@);
    }
  }

# Kommandozeilenparameter holen
die "\nUsage: $0 PORT\n" unless (@ARGV);
my $port = shift;

# Serielle Schnittstelle oeffen (abhaengig vom Betreibssystem)
my $serial_port; 
if ($OS_win) 
  { $serial_port = Win32::SerialPort->new ($port,1); }
else 
  { $serial_port = Device::SerialPort->new ($port,1); }
die "Kann seriellen Port $port nicht oeffen: $^E\n" 
   unless ($serial_port);

# Ab hier ist dann alles identisch
my $baud = $serial_port->baudrate();
print "Schnittstelle $port arbeitet mit $baud BPS\n";

# Schnittstellenparameter lesen
my $handshake = $serial_port->handshake();
print "Handshake: $handshake\n";
my $databits = $serial_port->databits();
my $parity = $serial_port->parity();
my $stopp = $serial_port->stopbits();
print "$databits Databits, $stopp Stoppbit(s), Paritaet:  $parity\n";

# ... usw.

# Schnittstelle schliessen
$serial_port->close;
undef $serial_port;
