06-13-2010 05:11 PM
I have been working on a program that has multiple inputs from multiple devices, and it seems I cannot get around the problem of my samples being overwritten. I have tried all the suggestions I found on the board, but so far nothing is working. Im sure im just missing something simple, but I thought I would come here for suggestions.
In this example I am using a NI9217 to read temperatures from 4 RTDs.
Task Creation
temperatureTask(1) = New Task() temperatureTask(1).AIChannels.CreateRtdChannel(temp1Device.Text & "/ai0:" & temp1Channel.Items.Count - 1, "", _ Convert.ToDouble(-40), Convert.ToDouble(65), _ AITemperatureUnits.DegreesC, rtdType, resistanceConfiguration, excitationSource, _ Convert.ToDouble(0.001), Convert.ToDouble(100)) temperatureTask(1).Stream.ReadOverwriteMode = ReadOverwriteMode.OverwriteUnreadSamples temperatureTask(1).Timing.ConfigureSampleClock("", 100, _ SampleClockActiveEdge.Rising, SampleQuantityMode.ContinuousSamples, 10000)
temperatureTask(1).Control(TaskAction.Verify)
temperatureReader(1) = New AnalogMultiChannelReader(temperatureTask(1).Stream)
temperatureReader(1).SynchronizeCallbacks = True
temperatureReader(1).BeginReadWaveform(-1, temperature1Callback, temperatureTask(1))
Callback
Private Sub temperature1InCallBack(ByVal ar As IAsyncResult) Try temperatureData = temperatureReader(1).ReadSingleSample If temp1Monitor.Value = True Then temperature1.Value = (Math.Floor((10 ^ 2) * temperatureData.GetValue(CInt(temp1Channel.SelectedItem.ToString))) / (10 ^ 2)) temp1Value.Text = temperature1.Value Else temp1Value.Text = "NA" End If If temp2Monitor.Value = True Then temperature2.Value = (Math.Floor((10 ^ 2) * temperatureData.GetValue(CInt(temp2Channel.SelectedItem.ToString))) / (10 ^ 2)) temp2Value.Text = temperature2.Value Else temp2Value.Text = "NA" End If If temp3Monitor.Value = True Then temperature3.Value = (Math.Floor((10 ^ 2) * temperatureData.GetValue(CInt(temp3Channel.SelectedItem.ToString))) / (10 ^ 2)) temp3Value.Text = temperature3.Value Else temp3Value.Text = "NA" End If If temp4Monitor.Value = True Then temperature4.Value = (Math.Floor((10 ^ 2) * temperatureData.GetValue(CInt(temp4Channel.SelectedItem.ToString))) / (10 ^ 2)) temp4Value.Text = temperature4.Value Else temp4Value.Text = "NA" End If temperatureReader(1).BeginReadSingleSample(temperature1Callback, temperatureTask(1)) Catch exception As DaqException MsgBox(exception.ToString) Catch ex As Exception MsgBox(ex.ToString) End Try End Sub
No matter what I try I seem to always get back to the error of samples being overwritten. Any help would be greatly appreciated.
06-13-2010 06:34 PM