PDA

View Full Version : obtaining "None" value in Schedule


mhead10
10-02-2012, 01:48 PM
Can I not assign values in a schedule loop? For instance, the following code prints out "data" correctly, but not the computed value "difference".


def CHK(err):
if err < 0:
buf_size = 100
buf = ctypes.create_string_buffer('\000' * buf_size)
nidaq.DAQmxGetErrorString(err,ctypes.byref(buf),bu f_size)
raise RuntimeError('nidaq call failed with error %d: %s'%(err,repr(buf.value)))

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

Thank you in advance.

farshizzo
10-03-2012, 12:39 PM
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:def CHK(err):
if err < 0:
buf_size = 100
buf = ctypes.create_string_buffer('\000' * buf_size)
nidaq.DAQmxGetErrorString(err,ctypes.byref(buf),bu f_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_n um_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"