Hi,
My program has grown a lot so I am sending a snippet with comments on where I have that code is added
// definations: in header file
-------------------------------------
{
// Create Analog tasks
std::auto_ptr<CNiDAQmxTask> m_AnalogTask1;
// create reader
std::auto_ptr<CNiDAQmxAnalogUnscaledReader> m_AnalogReader1;
CNiUInt32Matrix m_matAnalogData1;
void OnBufferReadDev1(CNiDAQmxAsyncOperation asyncHandle, void* userData);
}
// code in .cpp file
// Setup data acquisition at start of program
----------------------------------------------
OnInitialUpdate() {
m_AnalogTask1 = std::auto_ptr<CNiDAQmxTask>(new CNiDAQmxTask());
// Create voltage input channels
m_AnalogTask1->AIChannels.CreateVoltageChannel("Dev1/ai0:7","",DAQmxAITerminalConfigurationRse,-10, 10, DAQmxAIVoltageUnitsVolts);
// Setup sampling clock
m_AnalogTask1->Timing.ConfigureSampleClock("", 250, DAQmxSampleClockActiveEdgeRising, DAQmxSampleQuantityModeContinuousSamples, 250);
// verify the task is correct
m_AnalogTask1->Control(DAQmxTaskVerify);
// setup unscaled channel reader
m_AnalogReader1 = std::auto_ptr<CNiDAQmxAnalogUnscaledReader> (new CNiDAQmxAnalogUnscaledReader(m_AnalogTask1->Stream));
// Set up event handler for Buffer Read event
m_AnalogReader1->InstallEventHandler(*this, OnBufferReadDev1);
// Start the acquisition
m_AnalogReader1->ReadUInt32Async(100, m_matAnalogData1, NULL);
}
//function OnBufferReadDev1()
-------------------------
OnBufferReadDev1() {
unsigned int l_Volt = 0;
unsigned int l_Curr = 0;
unsigned int l_Flow = 0;
unsigned int l_Wire = 0;
if (... something ... ) {
for (int ctr = 0 ; ctr < 100; ctr = ctr + 5 ) {
l_Volt += m_matAnalogData1(0,ctr);
l_Curr += m_matAnalogData1(1,ctr);
l_Flow += m_matAnalogData1(2,ctr);
l_Wire += m_matAnalogData1(3,ctr);
}
}
else {
for (int ctr = 0 ; ctr < 100; ctr = ctr + 5 ) {
l_Volt += m_matAnalogData1(4,ctr);
l_Curr += m_matAnalogData1(5,ctr);
l_Flow += m_matAnalogData1(6,ctr);
l_Wire += m_matAnalogData1(7,ctr);
}
}
// Avg the data values & then display them in txt fields
// all the c_e variables are associated with Edit fields on Dialog box
c_eCurrent = float(l_Volt /100);
c_eVoltage = float(l_Curr /100);
c_eFlowrate = float(l_Flow /100);
c_eWirefeed = float(l_Wire /100);
// THIS IS WHERE THE CODE FAILS
UpdateData(FALSE);
// re read the data
m_AnalogReader1->ReadUInt32Async(100, m_matAnalogData1, NULL);
}