コード例 #1
0
	float64 readAnalog(char eingangNr = '0'){	//Default Eingang = 0
	// Task parameters
		TaskHandle  taskHandle = 0;
	
	// Channel parameters
		char        chan[8] = "Dev1/ai";
		float64     min = 0.0;
		float64     max = 5.0;

	// Timing parameters
		uInt64      samplesPerChan = 1;

	// Data read parameters
	
		float64		data;
		int32       pointsToRead = 1;
		int32       pointsRead;
		float64     timeout = 10.0;

		chan[7] = eingangNr;
	
		DAQmxErrChk (DAQmxBaseCreateTask("",&taskHandle));
		DAQmxErrChk (DAQmxBaseCreateAIVoltageChan(taskHandle,chan,"",DAQmx_Val_RSE,min,max,DAQmx_Val_Volts,NULL));
		DAQmxErrChk (DAQmxBaseStartTask(taskHandle));
		DAQmxErrChk (DAQmxBaseReadAnalogF64(taskHandle,pointsToRead,timeout,DAQmx_Val_GroupByChannel,&data,samplesPerChan,&pointsRead,NULL));

	// printf ("Acquired reading: %f\n", data);		//Debug
	
		DAQmxErrChk (DAQmxBaseStopTask (taskHandle));
	
		return data;
	}
コード例 #2
0
ファイル: ni.c プロジェクト: davidad/conformal_propulsion
int main (int argc, char *argv[])
{
    // Task parameters
    int32       error = 0;
    TaskHandle  taskHandle = 0;
    char        errBuff[2048]= {'\0'};
    int32       i;

    // Channel parameters
    char        chan[] = "Dev1/ai0";
    float64     min = -10.0;
    float64     max = 10.0;

    // Timing parameters
    char        source[] = "OnboardClock";
    uInt64      samplesPerChan = 100;
    float64     sampleRate = 1200.0;

    // Data read parameters
#define     bufferSize (uInt32)1000
    float64     data[bufferSize];
    int32       pointsToRead = -1;
    int32       pointsRead;
    float64     timeout = 10.0;

    while(1) {
        printf("new task\n\n");
        DAQmxErrChk (DAQmxBaseCreateTask ("", &taskHandle));
        DAQmxErrChk (DAQmxBaseCreateAIVoltageChan (taskHandle, chan, "", DAQmx_Val_NRSE, min, max, DAQmx_Val_Volts, NULL));
        DAQmxErrChk (DAQmxBaseCfgSampClkTiming (taskHandle, source, sampleRate, DAQmx_Val_Rising, DAQmx_Val_FiniteSamps, samplesPerChan));

        DAQmxErrChk (DAQmxBaseStartTask (taskHandle));

        DAQmxErrChk (DAQmxBaseReadAnalogF64 (taskHandle, pointsToRead, timeout, 0, data, bufferSize, &pointsRead, NULL));

        printf("pointsRead: %d\n",pointsRead);
        // Just print out the first 10 points
        for (i = 0; i < 8; ++i) {
            printf ("%f\n", data[i]);
        }
        DAQmxBaseStopTask (taskHandle);
        DAQmxBaseClearTask (taskHandle);
    }

Error:
    if (DAQmxFailed (error))
        DAQmxBaseGetExtendedErrorInfo (errBuff, 2048);

    if (taskHandle != 0)
    {
        DAQmxBaseStopTask (taskHandle);
        DAQmxBaseClearTask (taskHandle);
    }

    if (error)
        printf ("DAQmxBase Error %d: %s\n", error, errBuff);

    return 0;
}
コード例 #3
0
double DAQManager::getVoltage(){

    float64 sum;
    int32 read;
#ifdef _WIN32
	DAQmxStartTask(adcTaskHandle);
	trigger();
	while(!dataAcquired);
	dataAcquired=0;
	DAQmxStopTask(adcTaskHandle);
#elif __APPLE__
    /*bool32 isDone;
    DAQmxBaseIsTaskDone(adcTaskHandle,&isDone);*/
    DAQmxBaseReadAnalogF64(adcTaskHandle, SAMPLE_COUNT, 10.0, DAQmx_Val_GroupByScanNumber, data, SAMPLE_COUNT, &read, NULL);
    /*while(!isDone);
    DAQmxBaseStopTask(adcTaskHandle);
    DAQmxBaseClearTask(adcTaskHandle);*/
#endif
    sum = 0;
    for (int i = 0; i < SAMPLE_COUNT; ++i){
        sum += voltageData[i];
    }
    return sum / SAMPLE_COUNT;
}