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. -- http://mail.python.org/mailman/listinfo/python-list