#!D:\perl\bin\perl -w
#!/usr/local/bin/perl -w
#http://127.0.0.1/cgi-bin/serservo.pl?num=1&pos=127
#zuerst in dos-box: mode com2: baud=9600 parity=n data=8
#IP ermitteln
$IP=$ENV{REMOTE_ADDR};
$query=$ENV{'QUERY_STRING'};
if (length($query) == 0)
{
print "Content-type: text/html\n\n";
print "keine parameter gefunden";
exit;
}
&parse_data;
if (length($Data{'num'}) == 0)
{
print "Content-type: text/html\n\n";
print "num parameter fehlt";
exit;
}
if (length($Data{'pos'}) == 0)
{
print "Content-type: text/html\n\n";
print "pos parameter fehlt";
exit;
}
¶mcheck;
#print "Content-type: text/html\n\n";
#print "
$par1
$par2\n";
print "Content-type: text/plain", "\n";
print "Status: 204 No Response", "\n\n";
&opencom;
exit;
#-----------------------------------------------------------------
sub paramcheck
{
$par1 = $Data{'num'};
$par2 = $Data{'pos'};
if ($par1 >= 8)
{
print "Content-type: text/html\n\n";
print "dieses servo gibts nicht";
exit;
}
if ($par1 <= 0)
{
print "Content-type: text/html\n\n";
print "dieses servo gibts nicht";
exit;
}
if ($par2 >= 254) { $par2 = 254; };
if ($par2 <= 1) { $par2 = 6; };
}
#-----------------------------------------------------------------
sub opencom
{
open(USRFILE,">>com2:") || print "Could not open com port";
printf USRFILE "%c%c%c",255,$par1,$par2;
close(USRFILE);
}
#-----------------------------------------------------------------
# Daten aus dem Query-String parsen
sub parse_data {
# Splitten des Query_String in Datenpaare
@pairs = split(/&/, $ENV{'QUERY_STRING'});
# Foreach Schleife
foreach $pair (@pairs) {
# Splitten der Paare in einzelne Variablen
local($name,$value) = split(/=/, $pair);
# Unerwünschte Zeichen ausfiltern
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
# Server-Side Includes ausfiltern
$value =~ s///g;
# Liste Data anlegen
# Übergebene Daten können dann aus der Liste $Data durch
# Angabe von $name ausgelesen werden, es wird $value ausgegeben
# Bsp. $data{'action'} liefert den Wert von action= aus dem Query-String
$Data{$name} = "$Data{$name}$value";
}
# Ende Foreach Schleife
}
# Ende Daten aus dem Query_String parsen
#-----------------------------------------------------------------