Start endless time-based sampling

<< Click to Display Table of Contents >>

Navigation:  NmxDLL Reference Guide > HowTo > Sampling >

Start endless time-based sampling

For the following sample code, endless sampling with a system having 32 measurement channels and 64 digital in-/outputs is shown.

64 digital in-/outputs means there are 8 bytes each.

The sample rate shall be 1000 Samples/s.

The DLL-internal buffer shall be large enough to buffer for 5 seconds, which equals 5000 samples.

 

C / C++: Start with all measurement channels and digital I/Os


unsigned long ulNElements = 0;

 

// ###-> 1. Reset list of sampling elements

if (NMX_Sampling_Reset_1(pHandle) == NST_SUCCESS) {

 // List of sampling elements has been reset successfully.

}

else {

 // Failed resetting the list of sampling elements.

 // Do some error handling.

 return;

}

 

 

// ###-> 2/3. Add sampling elements

if ( (NMX_Sampling_AddChannelsAll_1(pHandle, &ulNElements) == NST_SUCCESS) &&

    (NMX_Sampling_AddDigiInAll_1(pHandle, &ulNElements) == NST_SUCCESS)   &&

    (NMX_Sampling_AddDigiOutAll_1(pHandle, &ulNElements) == NST_SUCCESS)    ) {

 // Successfully added all sampling elements

}

else {

 // Failed adding sampling elements

 // Do some error handling.

 return;

}

 

 

// ###-> 4. Prepare sampling with 1000 Samples/s (= 1000µs sample period)

if (NMX_Sampling_PrepareTime_1(pHandle, 1000/*µs*/, 5000/*Buffer-Size*/, 0/*0=NoLimit*/) == NST_SUCCESS) {

 // Sampling successfully prepared

}

else {

 // Failed preparing sampling

 // Do some error handling.

 return;

}

 

// ###-> 5. Start sampling

if (NMX_Sampling_Start_1(pHandle) == NST_SUCCESS) {

 // Start successful.
 // Reading sampled data should start now/soon to avoid a buffer overflow.
}

else {

 // Failed starting sampling

 // Do some error handling.

 return;

}

 

 

C / C++: Start with a selection of measurement channels and digital inputs


unsigned long ulNElements = 0;

 

// ###-> 1. Reset list of sampling elements

if (NMX_Sampling_Reset_1(pHandle) == NST_SUCCESS) {

 // List of sampling elements has been reset successfully.

}

else {

 // Failed resetting the list of sampling elements.

 // Do some error handling.

 return;

}

 

 

// ###-> 2/3. Add measurement channels 0, 5 & 17

//            Add digital input byte 0

if ( (NMX_Sampling_AddChannel_1(pHandle, 0, &ulNElements) == NST_SUCCESS) &&

    (NMX_Sampling_AddChannel_1(pHandle, 5, &ulNElements) == NST_SUCCESS) &&

    (NMX_Sampling_AddChannel_1(pHandle, 17, &ulNElements) == NST_SUCCESS) &&

    (NMX_Sampling_AddDigiInByte_1(pHandle, 0, &ulNElements) == NST_SUCCESS) ) {

 // Successfully added selected sampling elements

}

else {

 // Failed adding sampling elements

 // Do some error handling.

 return;

}

 

 

// ###-> 4. Prepare sampling with 1000 Samples/s (= 1000µs sample period)

if (NMX_Sampling_PrepareTime_1(pHandle, 1000/*µs*/, 5000/*Buffer-Size*/, 0/*0=NoLimit*/) == NST_SUCCESS) {

 // Sampling successfully prepared

}

else {

 // Failed preparing sampling

 // Do some error handling.

 return;

}

 

// ###-> 5. Start sampling

if (NMX_Sampling_Start_1(pHandle) == NST_SUCCESS) {

 // Start successful.

 // Reading sampled data should start now/soon to avoid a buffer overflow.
}

else {

 // Failed starting sampling

 // Do some error handling.

 return;

}

 

Delphi: Start with all measurement channels and digital I/Os


// ###-> 1. Reset list of sampling elements

if cNmx.Sampling_Reset_1(pHandleNmx) = NST_SUCCESS then begin

 // List of sampling elements has been reset successfully.

end

else begin

 // Failed resetting the list of sampling elements.

 // Do some error handling.

 exit;

end;

 

 

// ###-> 2/3. Add sampling elements

if (cNmx.Sampling_AddChannelsAll_1(pHandleNmx, ulNElements) = NST_SUCCESS) And 

 (cNmx.Sampling_AddDigiInAll_1(pHandleNmx, ulNElements) = NST_SUCCESS) And

 (cNmx.Sampling_AddDigiOutAll_1(pHandleNmx, ulNElements) = NST_SUCCESS) then begin

 // Successfully added all sampling elements

end

else begin

 // Failed adding sampling elements

 // Do some error handling.

 exit;

end;

 

 

// ###-> 4. Prepare sampling with 1000 Samples/s (= 1000µs sample period)

if cNmx.Sampling_PrepareTime_1(pHandleNmx, 1000{µs}, 5000{BufferSize}, 0{0=NoLimit}) = NST_SUCCESS then begin

 // Sampling successfully prepared

end

else begin

 // Failed preparing sampling

 // Do some error handling.

 exit;

end;

 

 

// ###-> 5. Start sampling

if cNmx.Sampling_Start_1(pHandleNmx) = NST_SUCCESS then begin

 // Start successful.

 // Reading sampled data should start now/soon to avoid a buffer overflow.

end

else begin

 // Failed starting sampling

 // Do some error handling.

 exit;

end;

 

 

Delphi: Start with a selection of measurement channels and digital inputs


// ###-> 1. Reset list of sampling elements

if cNmx.Sampling_Reset_1(pHandleNmx) = NST_SUCCESS then begin

 // List of sampling elements has been reset successfully.

end

else begin

 // Failed resetting the list of sampling elements.

 // Do some error handling.

 exit;

end;

 

 

// ###-> 2/3. Add sampling elements

if (cNmx.Sampling_AddChannel_1(pHandleNmx, 0, ulNTotal) = NST_SUCCESS) And 

 (cNmx.Sampling_AddChannel_1(pHandleNmx, 5, ulNTotal) = NST_SUCCESS) And

 (cNmx.Sampling_AddChannel_1(pHandleNmx, 17, ulNTotal) = NST_SUCCESS) And

 (cNmx.Sampling_AddDigiInByte_1(pHandleNmx, 0, ulNTotal) = NST_SUCCESS) then begin

 // Successfully added selected sampling elements

end

else begin

 // Failed adding sampling elements

 // Do some error handling.

 exit;

end;

 

 

// ###-> 4. Prepare sampling with 1000 Samples/s (= 1000µs sample period)

if cNmx.Sampling_PrepareTime_1(pHandleNmx, 1000{µs}, 5000{BufferSize}, 0{0=NoLimit}) = NST_SUCCESS then begin

 // Sampling successfully prepared

end

else begin

 // Failed preparing sampling

 // Do some error handling.

 exit;

end;

 

 

// ###-> 5. Start sampling

if cNmx.Sampling_Start_1(pHandleNmx) = NST_SUCCESS then begin

 // Start successful.

 // Reading sampled data should start now/soon to avoid a buffer overflow.

end

else begin

 // Failed starting sampling

 // Do some error handling.

 exit;

end;

 

C# / .Net: Start with all measurement channels and digital I/Os


UInt32 ulNElements = 0;

 

// ###-> 1. Reset list of sampling elements

if (cNmx.Sampling_Reset_1(pDevice) == NMX_MSTATUS.SUCCESS) {

 // List of sampling elements has been reset successfully.

}

else {

 // Failed resetting the list of sampling elements.

 // Do some error handling.

 return;

}

 

// ###-> 2/3. Add sampling elements

if ( (cNmx.Sampling_AddChannelsAll_1(pDevice, ref ulNElements) == NMX_MSTATUS.SUCCESS) &&

    (cNmx.Sampling_AddDigiInAll_1(pDevice, ref ulNElements) == NMX_MSTATUS.SUCCESS)   &&

    (cNmx.Sampling_AddDigiOutAll_1(pDevice, ref ulNElements) == NMX_MSTATUS.SUCCESS)    ) {

 // Successfully added all sampling elements

}

else {

 // Failed adding sampling elements

 // Do some error handling.

 return;

}

 

 

// ###-> 4. Prepare sampling with 1000 Samples/s (= 1000µs sample period)

if (cNmx.Sampling_PrepareTime_1(pDevice, 1000/*µs*/, 5000/*Buffer-Size*/, 0/*0=NoLimit*/) == NMX_MSTATUS.SUCCESS)

 // Sampling successfully prepared

}

else {

 // Failed preparing sampling

 // Do some error handling.

 return;

}

 

// ###-> 5. Start sampling

if (cNmx.Sampling_Start_1(pDevice) == NMX_MSTATUS.SUCCESS) {

 // Start successful.
 // Reading sampled data should start now/soon to avoid a buffer overflow.
}

else {

 // Failed starting sampling

 // Do some error handling.

 return;

}

 

 

C# / .Net: Start with a selection of measurement channels and digital inputs


UInt32 ulNElements = 0;

 

// ###-> 1. Reset list of sampling elements

if (cNmx.Sampling_Reset_1(pDevice) == NMX_MSTATUS.SUCCESS) {

 // List of sampling elements has been reset successfully.

}

else {

 // Failed resetting the list of sampling elements.

 // Do some error handling.

 return;

}

 

// ###-> 2/3. Add sampling elements

if ( (cNmx.Sampling_AddChannel_1(pDevice, 0, ref ulNElements) == NMX_MSTATUS.SUCCESS) &&

    (cNmx.Sampling_AddChannel_1(pDevice, 5, ref ulNElements) == NMX_MSTATUS.SUCCESS) &&

    (cNmx.Sampling_AddChannel_1(pDevice, 17, ref ulNElements) == NMX_MSTATUS.SUCCESS) &&

    (cNmx.Sampling_AddDigiInByte_1(pDevice, 0, ref ulNElements) != NMX_MSTATUS.SUCCESS) ) {

 // Successfully added all sampling elements

}

else {

 // Failed adding sampling elements

 // Do some error handling.

 return;

}

 

 

// ###-> 4. Prepare sampling with 1000 Samples/s (= 1000µs sample period)

if (cNmx.Sampling_PrepareTime_1(pDevice, 1000/*µs*/, 5000/*Buffer-Size*/, 0/*0=NoLimit*/) == NMX_MSTATUS.SUCCESS)

 // Sampling successfully prepared

}

else {

 // Failed preparing sampling

 // Do some error handling.

 return;

}

 

// ###-> 5. Start sampling

if (cNmx.Sampling_Start_1(pDevice) == NMX_MSTATUS.SUCCESS) {

 // Start successful.
 // Reading sampled data should start now/soon to avoid a buffer overflow.
}

else {

 // Failed starting sampling

 // Do some error handling.

 return;

}