|
#1
|
|||
|
|||
obtaining "None" value in Schedule
Can I not assign values in a schedule loop? For instance, the following code prints out "data" correctly, but not the computed value "difference".
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: yield 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 = yield abs(data[1]-data[0]) #find difference in voltage between first two pots print difference #prints "None" |
#2
|
|||
|
|||
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" |
Tags |
schedule |
|
|