📄 aoform.vb
字号:
Private Sub SetOutWaveForm()
Dim i As Integer
Dim j As Integer
Dim Remain As Integer
Dim Period As Integer
If (DAQAO1.NumberOfOutputs > 200) Then
Period = 200
Else
Period = DAQAO1.NumberOfOutputs / 4
End If
If DAQAO1.DataType = DAQAOLib.DATA_TYPE.adReal Then
ReDim DataArray(DAQAO1.NumberOfOutputs - 1)
For i = 0 To DAQAO1.NumberOfOutputs - 1
Select Case (cmbWaveForm.SelectedIndex)
Case 0
DataArray(i) = ((OutputRange / 2) * (System.Math.Sin((2 * 3.14 / Period) * i) + 1))
Case 1
Remain = Decimal.Remainder(i, Period)
If Remain < Period / 2 Then
DataArray(i) = OutputRange
Else
DataArray(i) = 0
End If
Case 2
Remain = Decimal.Remainder(i, Period)
If Remain < Period / 2 Then
DataArray(i) = Remain * OutputRange * 2.0 / Period
Else
DataArray(i) = 2 * OutputRange - Remain * OutputRange * 2.0 / Period
End If
End Select
Next i
DAQAO1.SetRealBuffer(DataArray)
Else
ReDim BinDataArray(DAQAO1.NumberOfOutputs - 1)
For i = 0 To DAQAO1.NumberOfOutputs - 1
Select Case (cmbWaveForm.SelectedIndex)
Case 0
BinDataArray(i) = ((4095 / 2) * (System.Math.Sin((3.14 / Period) * i) + 1))
Case 1
Remain = Decimal.Remainder(i, Period)
If Remain < Period / 2 Then
BinDataArray(i) = 4095
Else
BinDataArray(i) = 0
End If
Case 2
Remain = Decimal.Remainder(i, Period)
If Remain < Period / 2 Then
BinDataArray(i) = Remain * 4095 * 2 / Period
Else
BinDataArray(i) = 2 * 4095 - Remain * 4095 * 2 / Period
End If
End Select
Next
DAQAO1.SetRawBuffer(BinDataArray)
End If
End Sub
Private Sub cmdOutputStart_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdOutputStart.Click
Dim i As Integer
Dim j As Integer
If DAQAO1.OpenDevice Then
MsgBox(DAQAO1.ErrorMessage, MsgBoxStyle.OKOnly)
Exit Sub
End If
DAQAO1.Channel = cmbChannel.SelectedIndex
DAQAO1.EventEnabled = chkEventEnabled.CheckState
DAQAO1.CyclicMode = chkCyclicMode.CheckState
DAQAO1.NumberOfOutputs = Val(txtNumberOfOutputs.Text)
DAQAO1.TransferMode = cmbTransferMode.SelectedIndex
DAQAO1.OutputRate = Val(txtOutputRate.Text)
DAQAO1.DataType = cmbDataType.SelectedIndex
'Set Data Array
SetOutWaveForm()
lstWritting.Items.Clear()
' Start getting data
bRet = DAQAO1.OutputStart
If bRet Then
MsgBox(DAQAO1.ErrorMessage, MsgBoxStyle.OKOnly)
DAQAO1.CloseDevice()
Exit Sub
End If
cmdOutputStart.Enabled = False
cmdOutputStop.Enabled = True
cmdExit.Enabled = False
ErrorTimer.Enabled = True
PropertyFrame.Enabled = False
cmdSelectDevice.Enabled = False
End Sub
Private Sub cmdOutputStop_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdOutputStop.Click
' Stop get data
ErrorTimer.Enabled = False
PropertyFrame.Enabled = True
cmdOutputStart.Enabled = True
cmdOutputStop.Enabled = False
cmdExit.Enabled = True
cmdSelectDevice.Enabled = True
bRet = DAQAO1.OutputStop
If bRet Then
MsgBox(DAQAO1.ErrorMessage, MsgBoxStyle.OKOnly)
End If
' Close device
DAQAO1.CloseDevice()
End Sub
Private Sub cmdSelectDevice_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdSelectDevice.Click
Dim i As Short
Dim j As Short
Dim bRet As Boolean
'DAQDevice1.SelectDevice
DAQAO1.SelectDevice()
txtDeviceNum.Text = CStr(DAQAO1.DeviceNumber)
txtDeviceName.Text = DAQAO1.DeviceName
' Open device
If DAQAO1.OpenDevice Then
MsgBox(DAQAO1.ErrorMessage, MsgBoxStyle.OKOnly)
Exit Sub
End If
If DAQAO1.MaxChannel = 0 Then
DAQAO1.CloseDevice()
MsgBox("Function Not Supported", MsgBoxStyle.OKOnly)
Exit Sub
End If
' Get Max. channel number
cmbChannel.Items.Clear()
For j = 0 To DAQAO1.MaxChannel - 1
cmbChannel.Items.Add((Str(j)))
Next j
cmbChannel.SelectedIndex = DAQAO1.Channel
' Setting initial value
txtDeviceNum.Text = CStr(DAQAO1.DeviceNumber)
txtDeviceName.Text = DAQAO1.DeviceName
cmbDataType.SelectedIndex = DAQAO1.DataType
cmbChannel.SelectedIndex = DAQAO1.Channel
cmbTransferMode.SelectedIndex = DAQAO1.TransferMode
txtOutputRate.Text = CStr(DAQAO1.OutputRate)
txtNumberOfOutputs.Text = CStr(32768)
OutputRange = 5
DAQAO1.CloseDevice()
End Sub
Private Sub DAQAO1_OnCompleted(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles DAQAO1.OnCompleted
Dim i As Integer
Dim j As Integer
lstWritting.Items.Clear()
If DAQAO1.NumberOfOutputs < 10 Then
j = 0
Else
j = DAQAO1.NumberOfOutputs - 10
End If
If DAQAO1.DataType = DAQAOLib.DATA_TYPE.adReal Then
For i = j To DAQAO1.NumberOfOutputs - 1
lstWritting.Items.Add(("Buff[" & Str(i) & "]: " & Format(DataArray(i), "0.000000")))
Next i
Else
For i = j To DAQAO1.NumberOfOutputs - 1
lstWritting.Items.Add(("Buff[" & Str(i) & "]: " & Hex(BinDataArray(i))))
Next i
End If
End Sub
Private Sub DAQAO1_OnTerminated(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles DAQAO1.OnTerminated
Dim i As Integer
Dim j As Integer
' Stop wtite data
DAQAO1.OutputStop()
lstWritting.Items.Clear()
If DAQAO1.NumberOfOutputs < 10 Then
j = 0
Else
j = DAQAO1.NumberOfOutputs - 10
End If
If DAQAO1.DataType = DAQAOLib.DATA_TYPE.adReal Then
For i = j To DAQAO1.NumberOfOutputs - 1
lstWritting.Items.Add(("Buff[" & Str(i) & "]: " & Format(DataArray(i), "0.000000")))
Next i
Else
For i = j To DAQAO1.NumberOfOutputs - 1
lstWritting.Items.Add(("Buff[" & Str(i) & "]: " & Hex(BinDataArray(i))))
Next i
End If
' Close device
DAQAO1.CloseDevice()
PropertyFrame.Enabled = True
cmdOutputStart.Enabled = True
cmdOutputStop.Enabled = False
cmdExit.Enabled = True
ErrorTimer.Enabled = False
End Sub
Private Sub frmAoTester_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
' Select default device
ErrorTimer.Enabled = False
cmbOutputRange.SelectedIndex = 0
cmbWaveForm.SelectedIndex = 0
Call cmdSelectDevice_Click(cmdSelectDevice, New System.EventArgs)
End Sub
Private Sub txtDeviceNum_TextChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtDeviceNum.TextChanged
Dim j As Integer
If IsInitializing Then
Exit Sub
End If
DAQAO1.DeviceNumber = Val(txtDeviceNum.Text)
txtDeviceName.Text = DAQAO1.DeviceName
' Open device
If DAQAO1.OpenDevice Then
MsgBox(DAQAO1.ErrorMessage, MsgBoxStyle.OKOnly)
Exit Sub
End If
If DAQAO1.MaxChannel = 0 Then
' MsgBox("Function Not Supported", MsgBoxStyle.OKOnly)
DAQAO1.CloseDevice()
Exit Sub
End If
' Get Max. channel number
cmbChannel.Items.Clear()
For j = 0 To DAQAO1.MaxChannel - 1
cmbChannel.Items.Add((Str(j)))
Next j
cmbChannel.SelectedIndex = DAQAO1.Channel
DAQAO1.CloseDevice()
End Sub
Private Sub txtOutputRate_TextChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtOutputRate.TextChanged
If IsInitializing Then
Exit Sub
End If
DAQAO1.OutputRate = Val(txtOutputRate.Text)
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -