Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- #
- # (m)ein Stromzähler mit IR-Schnittstelle blubbert nach einem "Anforderung-
- # telegramm" Daten raus. Das Telegramm ist mit 300 Baud, 7 Bit, 1 Stoppbit
- # und gerader Parität zu senden. Das ist der Initialmodus von Geräten,
- # die das Protokoll IEC 62056-21 implementieren.
- #
- # Autor: Andreas Schulze
- # Bugfix: Eric Schanze
- # Datum: 20120302
- #
- my $PORT='/dev/ttyUSB0';
- my $anforderungstelegramm = "\n/?!\r\n";
- use warnings;
- use strict;
- use utf8;
- use Device::SerialPort;
- my $tty = new Device::SerialPort($PORT) || die "can't open $PORT: $!";
- $tty->baudrate(300) || die 'fail setting baudrate';
- $tty->databits(7) || die 'fail setting databits';
- $tty->stopbits(1) || die 'fail setting stopbits';
- $tty->parity("even") || die 'fail setting parity';
- $tty->write_settings || die 'fail write settings';
- #$tty->debug(1);
- my $num_out = $tty->write($anforderungstelegramm);
- die "write failed\n" unless ($num_out);
- die "write inclomplete\n" unless ($num_out == length($anforderungstelegramm));
- print "$num_out Bytes written\n";
- my ($num_read, $s);
- $tty->read_const_time(10);
- while(1) {
- ($num_read, $s) = $tty->read(1);
- print $s if $s;
- }
- $tty->close || die "can't close $PORT: $!";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement