[bcn-pm] Problemilla con arrays
Josep M. Mendoza
josep at mendoza-ginesta.net
Mon Feb 14 12:52:10 PST 2005
A Dilluns 14 Febrer 2005 19:59, Xavier Noria va escriure:
> On Feb 14, 2005, at 19:00, Josep M. Mendoza wrote:
[...]
> De acuerdo al codigo $byteCount es 6, que es distinto de 3. Es un bug?
> Para darle vueltas al tema, por que pasas $Length? No seria calculable
> a partir de @data? $Length = @data/2?
Ciertamente "es" el bug @data son words no bytes. Arreglado como así:
sub writeMultipleRegisters(){
my ($self, $Address, @data) = @_;
my $wordCount = @data;
my $byteCount = (wordCount * 2);
my $transactionID = chr(0).chr(0);
my $protocolID = chr(0).chr(0);
my $dataLength = $self->toChars( (7 + $byteCount) );
my $unitID = chr(0);
my $requestCode = chr(16);
my $requestAddress = $self->toChars($Address);
my $requestLength = $self->toChars($Length);
my $requestBytes = chr($byteCount);
[...]
Si calculo $wordCount a partir de @data no tengo que comprobar y/o advertir de
ninguna incongruencia.
El $byteCount es porque en el protocolo hay que darle la dirección inicial, la
longitud del área a escribir y los bytes de datos que se envían en el
telegrama y los dos valores de longitud y el de bytes siempre están
relacionados 1 a 2.
A veces la cosa más evidente es la que más cuesta ver...
Muchas gracias.
--
Josep M. Mendoza
http://mendoza-ginesta.net
More information about the Barcelona-pm
mailing list