is there a problem on this simple code

mensanator at aol.com mensanator at aol.com
Sat Mar 12 19:33:06 EST 2005


jrlen balane wrote:
> basically what the code does is transmit data to a hardware and then
> receive data that the hardware will transmit.
>
> import serial
> import string
> import time
> from struct import *
>
>
> ser = serial.Serial()
>
> ser.baudrate = 9600
> ser.port = 0
> ser
> ser.close()
> ser.open()
>
> command = 67
> message_no = 1
> total_data = 2
>
> item = 12000                            #to warm-up the hardware
> hexed = hex(item)
> data_hi, data_lo = divmod(item, 0x100)
> checksum = -(data_hi + data_lo + 0x46) & 0xff
> ser.write(pack('6B', command, message_no, total_data, data_lo,
> data_hi, checksum)) #serial transmit protocol
> time.sleep(1)
>
> item = 10000
> no = 0
> for item in range(10000, 30001, 250):
>     no = no +1
>     hexed = hex(item)
>     data_hi, data_lo = divmod(item, 0x100)
>     checksum = -(data_hi + data_lo + 0x46) & 0xff
>     ser.write(pack('6B', command, message_no, total_data, data_lo,
> data_hi, checksum))

What actually gets transmitted is "C\x01\x02\x10'\x83".
That's 18 bytes. Is the command supposed to be the ASCII
characters \x01 or a single byte whose value is 1?


>     data = ser.read(10)
>     (command, msg_no, no_databyte, temp1, temp2, pyra1, pyra2,
> voltage, current, checksum) = unpack('10B', data)  #serial receive
> protocol
>     print no, command, msg_no, no_databyte, temp1, temp2, pyra1,
> pyra2, voltage, current, checksum
>     time.sleep(1)
>
> ser.close()
>
>
> ===========================
> and here is some result after running the program on Idle Python 2.3
> (enthought ed.)
>
> 1 70 168 6 0 0 0 0 0 0 12
> 2 70 2 6 0 0 0 0 0 0 178
> 3 70 3 6 0 0 0 0 0 0 177
> 4 70 4 6 0 0 0 0 0 0 176
> 5 70 5 6 0 0 0 0 0 0 175
> 6 70 6 6 0 0 0 0 0 0 174
> 7 70 7 6 0 0 0 0 0 0 173
> 8 70 8 6 0 0 0 0 0 0 172
> 9 70 9 6 0 0 0 0 0 0 171
> 10 70 10 6 0 0 0 0 0 0 170
> 11 70 11 6 0 0 0 0 0 0 169
> 12 70 12 6 0 0 0 0 0 0 168
> 13 70 13 6 0 0 0 0 0 0 167
> 14 70 14 6 0 0 0 0 0 0 166
> 15 70 15 6 0 0 0 0 0 0 165
>
> ==========================
>
> the result i am expecting is for the data bytes (bytes 4-9) to change
> its value since i am able to control the sensors which the data were
> based. i am just asking for your opinion if there is something wrong
> with this program, otherwise, it could be a hardware problem.
> 
> thanks in advance.




More information about the Python-list mailing list