V 24453
I -717
CE -23571
SOC 835
TTG 4559
Alarm OFF
Relay OFF
AR 0
BMV 600S
FW 212
Checksum �
4:
H1 -27277
H2 -27277
H3 0
H4 0
H5 0
H6 -48242
H7 17697
H8 28750
H9 140703
H10 1
H11 0
H12 0
Checksum
####
#!/usr/bin/perl
use warnings;
use strict;
use Device::SerialPort;
my $ccnt;
my $string;
my $port = '/dev/ttyUSB0';
my $conf = '~/.conf';
my $ob = Device::SerialPort->new($port, 1) || die "Can't open $port: $!";
my $STALL_DEFAULT = 10;
my $timeout = $STALL_DEFAULT;
my $arb = $ob->can_arbitrary_baud;
my $data = $ob->databits(8);
my $baud = $ob->baudrate(19200);
my $parity = $ob->parity("none");
my $hshake = $ob->handshake("rts");
my $stop = $ob->can_stopbits;
my $rs = $ob->is_rs232;
my $total = $ob->can_total_timeout;
$ob->stopbits(1);
$ob->buffers( 4096, 4096 );
$ob->can_baud;
$ob->can_databits;
$ob->can_dtrdsr;
$ob->can_handshake;
$ob->can_parity_check;
$ob->can_parity_config;
$ob->can_parity_enable;
$ob->can_rtscts;
$ob->can_xonxoff;
$ob->can_xon_char;
$ob->can_spec_char;
$ob->can_interval_timeout;
$ob->can_ioctl;
$ob->can_status;
$ob->can_write_done;
$ob->can_modemlines;
$ob->can_wait_modemlines;
$ob->can_intr_count;
$ob->write_settings;
print
"A = $arb\n",
"B = $baud\n",
"D = $data\n",
"S = $stop\n",
"P = $parity\n",
"H = $hshake\n",
"R = $rs\n",
"T = $total";
my ($count, $string);
while(1) {
$ccnt++;
$ob->are_match("Checksum", "\n");
($count, $string) = $ob->read(500); #read 500 bytes
#print "$ccnt: count=$count string=$string\n\n" if ($string);
#$string =~ m/(.*?)V\t(\d*)\n\rI\t(\d*)\n\rCE\t(\d*)\n\rSOC\t(\d*)\n\rTTG\t(\d*)\n\r(.*?)/;
#my ($v, $i, $ce, $soc, $ttg, $more) = ($1,$2,$3,$4,$5,$6);
#print "$ccnt: ($v, $i, $ce, $soc, $ttg, $more)\\n";
$string =~ m/V\t\d*\n/;
print "$ccnt: $string\n";
sleep(1);
}
$ob->write_drain;
$ob->close;
undef $ob
####
($count, $string) = $ob->read(500); #read 500 bytes