Advertisement
Guest User

Itron USB IR

a guest
Nov 5th, 2014
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.23 KB | None | 0 0
  1. #!/usr/bin/perl
  2. #
  3. # (m)ein Stromzähler mit IR-Schnittstelle blubbert nach einem "Anforderung-
  4. # telegramm" Daten raus. Das Telegramm ist mit 300 Baud, 7 Bit, 1 Stoppbit
  5. # und gerader Parität zu senden. Das ist der Initialmodus von Geräten,
  6. # die das Protokoll IEC 62056-21 implementieren.
  7. #
  8. # Autor: Andreas Schulze
  9. # Bugfix: Eric Schanze
  10. # Datum: 20120302
  11. #
  12.  
  13. my $PORT='/dev/ttyUSB0';
  14. my $anforderungstelegramm = "\n/?!\r\n";
  15.  
  16. use warnings;
  17. use strict;
  18. use utf8;
  19. use Device::SerialPort;
  20.  
  21. my $tty = new Device::SerialPort($PORT) || die "can't open $PORT: $!";
  22. $tty->baudrate(300)      || die 'fail setting baudrate';
  23. $tty->databits(7)        || die 'fail setting databits';
  24. $tty->stopbits(1)        || die 'fail setting stopbits';
  25. $tty->parity("even")     || die 'fail setting parity';
  26. $tty->write_settings     || die 'fail write settings';
  27. #$tty->debug(1);
  28.  
  29. my $num_out = $tty->write($anforderungstelegramm);
  30. die "write failed\n" unless ($num_out);
  31. die "write inclomplete\n" unless ($num_out == length($anforderungstelegramm));
  32. print "$num_out Bytes written\n";
  33.  
  34. my ($num_read, $s);
  35. $tty->read_const_time(10);
  36. while(1) {
  37.   ($num_read, $s) = $tty->read(1);
  38.   print $s if $s;
  39. }
  40.  
  41. $tty->close || die "can't close $PORT: $!";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement