View Single Post
  #2  
Old 10-03-2012, 12:39 PM
farshizzo farshizzo is offline
WorldViz Team Member
 
Join Date: Mar 2003
Posts: 2,849
You seem to be confusing task functions with regular Python functions. There is no need to be yielding values in those functions. Just call the function and save the return value to a variable. I'd recommend reading through the Python Programming 101 tutorial in the documentation.

It's still difficult to understand what's going on in your script without seeing more code. However, try the following changes to see if it helps:
Code:
def CHK(err):
    if err < 0:
        buf_size = 100
        buf = ctypes.create_string_buffer('\000' * buf_size)
        nidaq.DAQmxGetErrorString(err,ctypes.byref(buf),buf_size)
        raise RuntimeError('nidaq call failed with error %d: %s'%(err,repr(buf.value)))

def mapping(): #obtains data, calculates difference
	while True:
		CHK(nidaq.DAQmxReadAnalogF64(taskHandle,1,float64(-1),DAQmx_Val_GroupByChannel,data.ctypes.data,max_num_samples,ctypes.byref(read),None))# obtain DAQ data, output is data[]
		print data #prints correctly
		difference = abs(data[1]-data[0]) #find difference in voltage between first two pots
		print difference #prints "None"
Reply With Quote