Remidemi
Routinier
Hallo
Ich möchte mit Perl Daten von einer seriellen Schnittstelle auslesen. Die Daten kommen aus einem Prüfgerät. Per Putty kann ich die COM Schnittstelle auslesen, es wird immer ein Datenstring bzw. eine Zeile ausgegeben bsp:
test 1234 test test
test 1234 test test
Mein Perl Scirpt zerreißt aber immer die Strings bsp:
te
st 123
4 te
usw.
Hier ein Auszug mit input()
Und hier mit read:
Hat jemand eine Idee? Wenn ich einen seriellen Scanner anschließe und etwas scanne werden die Daten richtig angezeigt.
Ich möchte mit Perl Daten von einer seriellen Schnittstelle auslesen. Die Daten kommen aus einem Prüfgerät. Per Putty kann ich die COM Schnittstelle auslesen, es wird immer ein Datenstring bzw. eine Zeile ausgegeben bsp:
test 1234 test test
test 1234 test test
Mein Perl Scirpt zerreißt aber immer die Strings bsp:
te
st 123
4 te
usw.
Hier ein Auszug mit input()
Code:
use strict;
use warnings;
use Win32::SerialPort;
$| = 1;
my $port = Win32::SerialPort->new ('COM9');
$port->databits(8);
$port->baudrate(9600);
$port->parity('none');
$port->stopbits(1);
$port->handshake("rts");
#$port->read_interval(100);
#$port->read_const_time(10);
START:
if ($data = $port->input) {
print $data;
print "\n";
}
goto START;
$port->close();
undef $port;
Und hier mit read:
Code:
use strict;
use warnings;
use Win32::SerialPort;
$| = 1;
my ($data, $num);
my $port = Win32::SerialPort->new ('COM9');
$port->databits(8);
$port->baudrate(9600);
$port->parity('none');
$port->stopbits(1);
$port->handshake("rts");
#$port->read_interval(100);
#$port->read_const_time(10);
START:
($num, $data) = $port->read(100);
if ($num > 0) {
print $data;
print "\n";
}
goto START;
$port->close();
undef $port;
Hat jemand eine Idee? Wenn ich einen seriellen Scanner anschließe und etwas scanne werden die Daten richtig angezeigt.