use strict;
use warnings;
use Win32::SerialPort;    # Windows-Variante

my $port1 = Win32::SerialPort->new('COM1')
    or die "Oops!\n";

# Parameter setzen
$port1->baudrate(9600)	  || die "baudrate geht nicht\n";
$port1->parity('even')	  || die "parity geht nicht\n";
$port1->databits(7)       || die "databits geht nicht\n";
$port1->stopbits(2)       || die "stopbits geht nicht\n";
$port1->handshake("rts")	|| die "handshake geht nicht\n";

# defined, weil "0" ein legaler Rueckgabewert ist
defined $port1->parity_enable('T')	|| die "parity_enable geht nicht\n";

# Man kann auch noch Meta-Info hinzufuengen
$port1->alias('GSM_Modem');
$port1->devicetype('modem');

# Devicecontrolblock schreiben
$port1->write_settings	    || die "write_setings geht nicht\n";

# Konfigurationsdatei erzeugen
$port1->save('mymodem.cfg')	|| die "save geht nicht\n";
undef $port1;

# Konfiguration laden
my $port2 = Win32::SerialPort->new('COM1')
    or die "Oops!\n";
# Alternativ auch:   $port1->restart('mymodem.cfg');

# und mal ausgeben ...
print "handshake problem\n" unless ("rts" eq $port2->handshake);
print "baudrate problem\n" unless (9600 == $port2->baudrate);
print "parity problem\n" unless ("even" eq $port2->parity);
print "databits problem\n" unless (7 == $port2->databits);
print "stopbits problem\n" unless (2 == $port2->stopbits);

undef $port2;