Ejemplo n.º 1
0
	void writeDigitalPort(uInt8 dig_out_daten, char portNr = '0') {  //Default Port = 0
	
		TaskHandle	taskHandle = 0;
	
	// Channel parameters
		char        chan[10] = "Dev1/port";

	// Write parameters
		uInt8      w_data [1];
		int32       written;
	
		chan[9] = portNr;  // Vervollständige den String mit der Portnummer
	
	// Create Digital Output Channel and Task
		DAQmxErrChk (DAQmxBaseCreateTask ("", &taskHandle));
		DAQmxErrChk ( DAQmxBaseCreateDOChan(taskHandle,chan,"",DAQmx_Val_ChanForAllLines) );

	// Start Task (configure port)
	//DAQmxErrChk (DAQmxBaseStartTask (taskHandle));

	//  Write dig_out_daten to port(s)
	//  Only 1 sample per channel supported for static DIO
	//  Autostart ON
	
		w_data[0] = dig_out_daten;

	// printf("Data to write: 0x%X\n", w_data[0]);  // Debug

		DAQmxErrChk (DAQmxBaseWriteDigitalU8(taskHandle,1,1,10.0,DAQmx_Val_GroupByChannel,w_data,&written,NULL));
		DAQmxErrChk (DAQmxBaseStopTask (taskHandle));
	}
Ejemplo n.º 2
0
DAQManager::DAQManager()
{

	stateCount = 8;
	states = new uInt32[stateCount];
	states[0] = 0x8;
	states[1] = 0xC;
	states[2] = 0x4;
	states[3] = 0x6;
	states[4] = 0x2;
	states[5] = 0x3;
	states[6] = 0x1;
	states[7] = 0x9;
	stateNum = 0;
	dataAcquired = 0;
	voltageData = new float64[SAMPLE_COUNT];
#ifdef _WIN32
	DAQmxCreateTask("", &motorTaskHandle);
	DAQmxCreateTask("", &adcTaskHandle);
	DAQmxCreateTask("", &triggerTaskHandle);

	DAQmxCreateDOChan(motorTaskHandle, "Dev1/port0", "", DAQmx_Val_ChanForAllLines);
	DAQmxCreateDOChan(triggerTaskHandle, "Dev1/port1", "", DAQmx_Val_ChanForAllLines);

	DAQmxCreateAIVoltageChan(adcTaskHandle, "Dev1/ai0", "", DAQmx_Val_Cfg_Default, -10.0, 10.0, DAQmx_Val_Volts, NULL);
	DAQmxCfgSampClkTiming(adcTaskHandle, "", SAMPLE_FREQ, DAQmx_Val_Rising, DAQmx_Val_FiniteSamps, SAMPLE_COUNT);
	DAQmxCfgDigEdgeStartTrig(adcTaskHandle, "/Dev1/PFI0", DAQmx_Val_Rising);
	DAQmxRegisterEveryNSamplesEvent(adcTaskHandle, DAQmx_Val_Acquired_Into_Buffer, 1000, 0, EveryNCallbackWrapper, this);

	DAQmxStartTask(motorTaskHandle);
	DAQmxStartTask(triggerTaskHandle);

	uInt32 data;
	int32 written;
	data = states[0];
	DAQmxWriteDigitalU32(motorTaskHandle, 1, 1, 10.0, DAQmx_Val_GroupByChannel, &data, &written, NULL);
	data=0x0;
	DAQmxWriteDigitalU32(triggerTaskHandle, 1, 1, 10.0, DAQmx_Val_GroupByChannel, &data, &written, NULL);
#elif __APPLE__
    DAQmxBaseCreateTask("motorTask", &motorTaskHandle);
    DAQmxBaseCreateDOChan(motorTaskHandle, "Dev1/port0", "", DAQmx_Val_ChanForAllLines);
    DAQmxBaseStartTask(motorTaskHandle);

    DAQmxBaseCreateTask("adcTask", &adcTaskHandle);
    DAQmxBaseCreateAIVoltageChan(adcTaskHandle, "Dev1/ai0", "", DAQmx_Val_Cfg_Default, -10.0, 10.0, DAQmx_Val_Volts, NULL);
    DAQmxBaseCfgSampClkTiming(adcTaskHandle,"OnboardClock", SAMPLE_FREQ, DAQmx_Val_Rising, DAQmx_Val_ContSamps, SAMPLE_COUNT);
    DAQmxBaseCfgInputBuffer(adcTaskHandle,0);
    DAQmxBaseStartTask(adcTaskHandle);
    uInt32 data;
    int32 written;
    data = states[0];
    DAQmxBaseWriteDigitalU32(motorTaskHandle, 1, 1, 10.0, DAQmx_Val_GroupByChannel, &data, &written, NULL);
#endif
}
Ejemplo n.º 3
0
BEGIN_NAMESPACE_NIDAQ


DigitalOutputTask::DigitalOutputTask(Device &device, unsigned int portNumber) :
    Task(device)
{
    std::string lines = getChannelName("port", portNumber);

    std::int32_t error = DAQmxBaseCreateDOChan(getHandle(),
                         lines.c_str(),
                         NULL,
                         DAQmx_Val_ChanForAllLines);
    Error::throwIfFailed(error);

    Task::addChannel(lines);
}