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