def create_task(self): # need to check if task exists and fail #self.task = PyDAQmx.Task() self.task_handle = mx.TaskHandle(0) mx.DAQmxCreateTask("", byref(self.task_handle)) if self.mode == 'large_range': logger.debug('counter_chan {}'.format(self.counter_chan)) logger.debug('input_terminal {}'.format(self.input_terminal)) mx.DAQmxCreateCIFreqChan( self.task_handle, counter=str(self.counter_chan), nameToAssignToChannel="", minVal=5e1, # applies measMethod is DAQmx_Val_LargeRng2Ctr maxVal=1e8, # applies measMethod is DAQmx_Val_LargeRng2Ctr units=DAQmx_Val_Hz, edge=DAQmx_Val_Rising, measMethod=DAQmx_Val_LargeRng2Ctr, measTime=1.0, # applies measMethod is DAQmx_Val_HighFreq2Ctr divisor=100, # applies measMethod is DAQmx_Val_LargeRng2Ctr customScaleName=None, ) elif self.mode == 'high_freq': mx.DAQmxCreateCIFreqChan( self.task_handle, counter=self.counter_chan, nameToAssignToChannel="", minVal=1e1, # applies measMethod is DAQmx_Val_LargeRng2Ctr maxVal=1e7, # applies measMethod is DAQmx_Val_LargeRng2Ctr units=DAQmx_Val_Hz, edge=DAQmx_Val_Rising, measMethod=DAQmx_Val_HighFreq2Ctr, measTime=0.05, # applies measMethod is DAQmx_Val_HighFreq2Ctr divisor=100, # applies measMethod is DAQmx_Val_LargeRng2Ctr customScaleName=None, ) elif self.mode == 'low_freq': mx.DAQmxCreateCIFreqChan( self.task_handle, counter=self.counter_chan, nameToAssignToChannel="", minVal=1e1, # applies measMethod is DAQmx_Val_LargeRng2Ctr maxVal=1e7, # applies measMethod is DAQmx_Val_LargeRng2Ctr units=DAQmx_Val_Hz, edge=DAQmx_Val_Rising, measMethod=DAQmx_Val_LowFreq1Ctr, measTime=0.05, # applies measMethod is DAQmx_Val_HighFreq2Ctr divisor=100, # applies measMethod is DAQmx_Val_LargeRng2Ctr customScaleName=None, ) ### data = c_int32(0) ### self.task.GetCIDataXferMech(channel=self.counter_chan, data=data ) ### print "XFmethod" , data.value # set DMA #self.task.SetCIDataXferMech(channel=self.counter_chan, data=DAQmx_Val_DMA) ### self.task.GetReadOverWrite(data=byref(data)) ### print "overwrite", data.value #Set the input terminal of the counter mx.DAQmxSetCIFreqTerm(self.task_handle, channel=self.counter_chan, data=self.input_terminal) #Set the counter channel to continuously sample into a buffer. The size of the #buffer is set by sampsPerChan. mx.DAQmxCfgImplicitTiming(self.task_handle, sampleMode=DAQmx_Val_ContSamps, sampsPerChan=1000) mx.DAQmxSetReadOverWrite(self.task_handle, DAQmx_Val_OverwriteUnreadSamps) ### self.task.GetReadOverWrite(data=byref(data)) ### print "overwrite", data.value # Sample buffer self._sample_buffer_count = c_int32(0) self.sample_buffer = np.zeros((SAMPLE_BUFFER_SIZE, ), dtype=np.float64)