Folks,

I'm having some issues here with pyserial & trying to translate a perl
script to python...  It's probably my inexperience with PySerial &
perl that is troubling me...

Can anyone assist?

I'm concerned, since I can't seem to receive the data in any reliable
manner..  I've tested multiple times, and only once received data...
So I suspect that my Transmit & receive code is faulty...

def             xmit ( data, serialport ):
        for x in data:
                xmit_byte (x, serialport)
#       serialport.write ( binascii.unhexlify ( data ) )
#       for x in data:
#               print str(x).encode ('hex')
#               serialport.write ( x.encode('hex'))

def             receive ( serialport ):
        received = serialport.read (20)
        print received, "!"

----- Perl Code ----
sub tx_command {
        my $port = shift;
        my $cmd = shift;

#       warn "tx_command($cmd)\n";

        my @cmd_bytes = split(/\s/, $cmd);

        foreach my $byte (@cmd_bytes) {
                $byte = pack('C', hex($byte));

                $port -> write($byte);
                select(undef, undef, undef, 0.01);
        }
}

# returns the rtt, or 0 if no response
sub rx_response {
        my ($port, $address) = @_;

        $port->read_char_time(0);     # don't wait for each character
        $port->read_const_time(5000); # timeout if we don't get what we're
looking for

        my $buf = '';

        my $t_start = time;

        ### accumulate one byte at a time until we see the substring we're
looking for

        while (1) {
                my ($count_in, $string_in) = $port->read(1);

                if ($count_in == 0) {
                #       warn "TIMEOUT\n";
                        return 0;
                }

                $buf .= $string_in;

                my $bufstring = packed_to_text($buf);

                #warn "bufstring: ".$bufstring;

                if ($bufstring =~/02 50 $address (.. .. ..) (..) (.. ..)/) {

                        my $powerlinc_addr = $1;
                        my $flags = $2;
                        my $command = $3;

                #       warn "got response!\n";

                        my $rtt = time() - $t_start;

                        return $rtt;
                }

        }
}

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to