⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aoform.vb

📁 使用研华DAQ和VB.net实现研华数据采集卡的多种功能.包括数据输入输出。内含多个源码
💻 VB
📖 第 1 页 / 共 4 页
字号:
    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 + -