is there a problem on this simple code
John Machin
sjmachin at lexicon.net
Tue Mar 15 21:17:03 EST 2005
jrlen balane wrote:
[from further down in the message]
> could somebody out there help me.
You could try helping yourself. Insert some print statements at salient
points. [see examples below; you'll need to get the indentation
correct, of course] Try to understand what is happening.
> ok heres the code, i'm trying on IDLE:
>
> import sys
> import serial
> import sys, os
> import serial
> import string
> import time
> from struct import *
>
> data_file = open('C:/Documents and
Settings/nyer/Desktop/IRRADIANCE.txt', 'r')
> data = data_file.readlines()
>
> def process(list_of_lines):
> data_points = []
> for line in list_of_lines:
> data_points.append(int(line))
> return data_points
>
> irradiance = process(data)
>
> ser = serial.Serial()
> ser.baudrate = 9600
> ser.port = 0
> ser
I'll ask, for the 3rd time, what the @#$% is the above line meant to
achieve?
>
> ser.open()
> tx_command = 67
> tx_no_databyte = 2
> tx_message_no = 1
> tx_len = len (irradiance)
>
> for j in range (tx_len) :
> start_time = time.time()
>
> temp1 = []
> temp2 = []
> pyra1 = []
> pyra2 = []
> voltage = []
> current = []
>
> current_time = time.time()
print 'before while stmt', j, start_time, current time
>
> while( current_time >= start_time + 300):
>
print 'inside while stmt', j, start_time, current time
> data_hi, data_lo = divmod(irradiance[j], 0x100)
> tx_checksum = -(data_hi + data_lo + tx_command +
tx_message_no
> + tx_no_databyte) & 0xff
> ser.write(pack('6B', tx_command, tx_message_no,
> tx_no_databyte, data_lo, data_hi, tx_checksum))
>
> rx_data = ser.read(19)
> rx_len = len(rx_data)
> byte = [ord(x) for x in rx_data]
>
> if rx_len < 10:
> #print 'it is not pumping data out as fast as we assumed'
> sys.exit(1)
>
> for k in range (rx_len-9):
> if byte[k] == 70 and byte [k+2] == 6 and
sum(byte[k:k+10])
> & 0xff == 0:
> #print byte[k:k+10]
>
> temp1.append(byte[k+3])
> temp2.append(byte[k+4])
> pyra1.append(byte[k+5])
> pyra2.append(byte[k+6])
> voltage.append(byte[k+7])
> current.append(byte[k+8])
> print temp1, temp2, pyra1, pyra2, voltage, current
>
> current_time = time.time()
print 'after while stmt', j, start_time, current time
>
> while theres no error in the output, there is also no response from
> the hardware or maybe communication is off.
>
More information about the Python-list
mailing list