Thread Konsolenbefehl als Subroutine (Substitution) (5 answers)
Opened by JuMi2006 at 2012-09-21 10:37

JuMi2006
 2012-09-21 10:37
#161973 #161973
User since
2012-09-17
8 Artikel
BenutzerIn
[default_avatar]
Ich habe hier ein kleines Problem was ich nicht näher eingrenzen kann da irgendwie zu viele Parameter dahinter hängen. Vielleicht kann jemand meinen Perl Code verifizieren.
Ich will via socat einen Befehl auf die serielle Schnittstelle senden. Das klappt mit dem folgenden Befehl auch gut:

Code: (dl )
echo 0015070400a4 | perl -ne 's/([0-9a-f]{2})/print chr hex $1/gie' | socat -t1 - /dev/ttyUSB-1-4,b2400


Jetzt will ich 0015070400A4 aber als String in einem Script erstellen lassen (und Varianten davon) und den String an eine sub übergeben die genau das macht was oben steht:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
my $usb = '/dev/ttyUSB-1-4!
my $command = '0015070400a4' ;
&send ($command);

sub send
{
my $raw = shift;
$raw =~ s/([0-9a-f]{2})/chr hex $1/gie;
system ("echo ".$raw." | socat -t1 - ".$usb.",b2400");
}


Hab ich da einen Fehler drin? Meiner Meinung nach müsste die Sub jetzt genau das gleiche machen wie der Konsoleneinzeiler?

Gruß JuMi2006

View full thread Konsolenbefehl als Subroutine (Substitution)