11-13-2015 09:15 AM
Can someone please help me with this block of code that I have? I do not understand why on the first execution it works fine with no daq Exception errors, but on the second execution I get an error.
More detailed, I am creating a virual channel in one Sub with a button click event. That virtual channel is set to default values (MIN = -10, MAX = +10, Linear Scale with Scale and Offset at 1 and 0 respectively).
In the other Sub click event, is where I am having the difficulties. In this Sub I am creating the custom scales and assigning values to them, setting the MIN and MAX values of the virtual channel to the same minimum and maximum values of the Custom Scale being used, and then finally assigning that new custom scale to the virtual channel to use. The code works for the first execution. When I change the scaling and then execute the code again for a second iteration, I get a daq Exception error.
Its appears that the MIN and MAX are getting set on the second execution but the Scaling is not being reset to a the new scale values. Can someone verify and if so, what is wrong and needs to be changed in my code?
First Execution of the "DownLoad" button click event to assign the custom scale with its values to the virtual chanel.....works fine.
Change the Scaling, in this case from 400 to 600, and then execute the same code again with the "Download" button click event and I get the daqException Error
myTask.Control(TaskAction.Stop) PreScaledVals.TrimExcess() : PreScaledValsArray = PreScaledVals.ToArray ScaledVals.TrimExcess() : ScaledValsArray = ScaledVals.ToArray If chkBoxTblScale.Checked = True Then Try min = ScaledValsArray.First max = ScaledValsArray.Last Catch ex As Exception MessageBox.Show(ex.Message & " Table Scale must contain at least two prescaled values and two scaled values.") Return End Try ElseIf chkBoxLinScale.Checked = True Then min = numEdtMIN.Value max = numEdtMAX.Value ElseIf chkBoxMapScale.Checked = True Then min = numEdtSMin.Value max = numEdtSMax.Value End If LinScale = New DAQmx.LinearScale("Linear Scale", scale, offset) RMPScale = New DAQmx.RangeMapScale("Ranged Map Scale", prescaledMin, prescaledMax, scaledMin, scaledMax) If chkBoxTblScale.Checked = True Then Try TblScale = New DAQmx.TableScale("Table Scale", PreScaledValsArray, ScaledValsArray) Catch ex As DaqException MessageBox.Show(ex.Message) End Try End If Try If cboBoxChannels.Text = "6" Then ChannelSelected = 6 ElseIf cboBoxChannels.Text = "7" Then ChannelSelected = 7 ElseIf cboBoxChannels.Text = "8" Then ChannelSelected = 8 ElseIf cboBoxChannels.Text = "9" Then ChannelSelected = 9 ElseIf cboBoxChannels.Text = "10" Then ChannelSelected = 10 ElseIf cboBoxChannels.Text = "11" Then ChannelSelected = 11 ElseIf cboBoxChannels.Text = "12" Then ChannelSelected = 12 ElseIf cboBoxChannels.Text = "13" Then ChannelSelected = 13 ElseIf cboBoxChannels.Text = "14" Then ChannelSelected = 14 Else : ChannelSelected = 15 End If Select Case ChannelSelected Case 6 myTask.AIChannels(lblCh6Wfg.Text).Minimum = min myTask.AIChannels(lblCh6Wfg.Text).Maximum = max If chkBoxLinScale.Checked = True Then myTask.AIChannels(lblCh6Wfg.Text).CustomScaleName = "Linear Scale" ElseIf chkBoxTblScale.Checked = True Then myTask.AIChannels(lblCh6Wfg.Text).CustomScaleName = "Table Scale" ElseIf chkBoxMapScale.Checked = True Then myTask.AIChannels(lblCh6Wfg.Text).CustomScaleName = "Ranged Map Scale" End If TblScale = Nothing RMPScale = Nothing LinScale = Nothing
Solved! Go to Solution.
11-13-2015 12:22 PM
Watch what you are doing with the New .
If the object doesn't exist then you want to create it, but once it is created, you should be modifying it.