use strict; use utf8; use warnings; use Mojo::JSON qw|from_json|; use bytes; use MBclient; sub new{ .... }; sub _device_read{ # $d as data # $mbc as ModBusControl # $r as response my ( $d, $mbc, $r )=( shift, MBclient->new(), undef ); # parse device config $d->{regs}=from_json( $d->{regs} ); # setup device attributes $mbc->host ( $d->{ip} ); $mbc->port ( $d->{port} ); $mbc->unit_id ( 0 ); # by default. # for all specified registers foreach my $reg ( keys %{$d->{regs}->{r}} ){ $r->{$reg}=_prittyfy_byte( # read data from device registers $mbc->read_input_registers( # converting text register address to hex hex( $reg ), # specify number of registers to read $d->{regs}->{r}->{$reg} ) ); } return( $r ); }; # converts from hex data to deximal # recieve output from modbus sensors sub _prettify_byte{ # okay state of deal return( sprintf( '%.2f', unpack('f',pack( 's2', @{ $_[0] }[1,0] ) ) ) ) if( $_[0] ); #return error message return( $c{_err_} ); };