In der Art, wie Du Dein test-Skript konstruiert hast, scheint es nicht zu versuchen,
Werte auszulesen.
Es gibt wohl nur die Abfragestrings aus.
Die Abfrage steckt wohl in diesem Teil des Originalskriptes:
Code: Alles auswählen
my $command=
"\e%-12345X\@PJL \r\n"
. join("\n", @dinquire)."\n"
. "\e%-12345X";
open LP, "+> $where" or die "Can't open $where\n";
print LP $command;
my $result="";
do {
$result= join "", <LP>;
sleep 1;
} while ($result eq "");
(Ich kann halt kein perl)
dmesg gibt /dev/usb/lp1 an. Das habe ich erfolglos auch schon ausprobiert.
Can't open /dev/usb/lp0
[ 96.269038] usblp 1-1.2:1.0: usblp1: USB Bidirectional printer dev 7 if 0 alt 0 proto 2 vid 0x04F9 pid 0x0033
[ 96.269057] usbcore: registered new interface driver usblp
[ 100.109372] usblp1: removed
[ 100.859435] usblp 1-1.2:1.0: usblp1: USB Bidirectional printer dev 7 if 0 alt 0 proto 2 vid 0x04F9 pid 0x0033
[ 661.437187] usblp1: removed
Im Zweifel würde ich es mit dem Device versuchen, welches dmesg ausgibt.
"usblp1" ist hier nur eine logische Bezeichnung durch den Treiber usblp?
Nach der Abfrage
dmesg | grep lp
ist das device wohl nichts mit "lp" im Namen
Was gibt dmesg denn beim Anstecken des Druckers aus?
Oder ist es gar /dev/usblp1 ?
Beobachten beim An-/Abstecken
Code: Alles auswählen
watch -n 1 'ls -l /dev/*usb* /dev/usb/* /dev/*lp*'
alternativ
watch -n 1 'find /dev/ | egrep -i "usb|lp" '
oder etwas mehr
watch -n 1 -d=cum 'find /dev/ -maxdepth 2 -print0 | sed "s@/dev/@ /dev/@g" '
--------------------------------------------------------------------------------------
Hast Du hier den Stecker gezogen/ausgeschaltet?
[ 100.109372] usblp1: removed
...
[ 661.437187] usblp1: removed
Ich habe hier ein USB-cdrom, welches sich gelegentlich als anderes /dev/sr# reconnected.
(Bisher noch nie beim Auslesen/Schreiben)