Test-Programm, erstellt unter SUSE-LINUX 8.0
Programmiersprache: PERL
AUSGAENGE AN und AUS schalten
Man sieht mit diesem kleinen Perl-Programm, wie einfach es ist, die Ausgaenge
zu beschalten:
#!/usr/bin/perl
printf "------------------------------------------------------------\n";
printf "PERL-Programm test1.pl:\n";
printf "TEST CAN-MODUL 31.12.2003 G.FI:\n";
printf "AUSGAENGE nacheinander AN/AUS schalten\n";
printf "------------------------------------------------------------\n";
#################################################
#### VORSPANN #######
#################################################
open(F_CAN,"|gfi_send -t=isa") || die("FEHLER: open von gfi_send");
$oh=select(F_CAN); $|=1; select($oh);
$oh=select(STDOUT); $|=1; select($oh);
$addr="0x201"; ## ADDR. des E/A-Moduls
#################################################
#### ab hier wird geschaltet #######
#################################################
## alle Ausgaenge OFF schalten
printf(F_CAN "$addr 4 0xff\n");
sleep(5);
for($i=1;$i<100;$i++) { ## 100 x das ganze durchlaufen lassen
for($ausgang=0;$ausgang<8;$ausgang++) {
schalte($addr,$ausgang,1); # Ausgang ON schalten
sleep(1);
schalte($addr,$ausgang,0); # Ausgang OFF schalten
sleep(1);
}
}
#################################################
#### FUNKTIONEN ####
#################################################
sub schalte {
my $addr=shift;
my $ausgang=shift;
my $an_aus=shift;
printf "sub schalte, addr: $addr, ausgang: $ausgang, an_aus: $an_aus\n";
if($an_aus == 0) { $cmd="0x04"; }
if($an_aus == 1) { $cmd="0x03"; }
$ausgabe=1;
$ausgabe=$ausgabe << $ausgang;
printf(F_CAN "%s %s 0x%02x\n",$addr,$cmd,$ausgabe);
}
### +------------------------------------------------------------------+
### ! Georg Fischer, Amselweg 7, D-89281 Herrenstetten Germany !
### ! Dipl.-Ing. (FH) Holztechnik !
### ! Email: ==> G-F-I@t-online.de <== (best way to reach me) !
### ! Internet: http://www.fischer-altenstadt.de !
### ! Internet: http://www.holz-technologie-beratung.de !
### ! Telefon: +49-8337-8646 !
### ! Telefax: +49-8337-9118 !
### +------------------------------------------------------------------+