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

📄 2205dma.frm

📁 vb控制
💻 FRM
📖 第 1 页 / 共 2 页
字号:
         ForeColor       =   &H0000FFFF&
         Height          =   255
         Index           =   1
         Left            =   45
         TabIndex        =   7
         Top             =   1020
         Width           =   600
      End
      Begin VB.Label labValue 
         Alignment       =   1  'Right Justify
         Appearance      =   0  'Flat
         BackColor       =   &H00C0C0C0&
         Caption         =   "10.0"
         ForeColor       =   &H0000FFFF&
         Height          =   255
         Index           =   0
         Left            =   45
         TabIndex        =   6
         Top             =   420
         Width           =   600
      End
      Begin VB.Label labVots 
         Appearance      =   0  'Flat
         BackColor       =   &H00C0C0C0&
         Caption         =   "Volt"
         ForeColor       =   &H0000FFFF&
         Height          =   255
         Left            =   180
         TabIndex        =   5
         Top             =   195
         Width           =   435
      End
   End
   Begin VB.Label txtXfer 
      Alignment       =   1  'Right Justify
      ForeColor       =   &H00C00000&
      Height          =   375
      Left            =   5160
      TabIndex        =   34
      Top             =   6000
      Width           =   2115
   End
   Begin VB.Menu mnuExit 
      Caption         =   "E&xit!"
   End
End
Attribute VB_Name = "dma2205"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Const DISP_COUNT = 1000
Dim gnADChn As Long
Dim gnCount As Long
Dim gnClkDiv As Integer
Dim trigLevel As Integer
Dim trigLLevel As Integer
Dim count1 As Long
Dim ch_cnt As Integer
Dim gnBuffer(400000) As Integer
Dim dma_size As Long
Dim bStop As Integer
Dim startPos As Long
'Dim Range As Integer


Private Sub btnStart_Click()
  Dim result As Long
  Dim status As Byte
  Dim i As Long, k As Long
  Dim ReTrgCnt As Integer, MCnt As Integer, PostCnt As Integer
  Dim TimerSrc As Integer
  
  PostCnt = CInt(txtPostCount.Text)
  dma_size = CLng(cobDataSize.Text)
  ch_cnt = CLng(cobChn.ListIndex)
  ch_cnt = ch_cnt + 1
  'Range = AD_B_10_V
  btnStart.Enabled = False
  For i = 0 To 3 Step 1
    result = D2K_AI_CH_Config(card, ch_num(i), ch_range(i) Or (ch_ref(i) * 256))
  Next
   
  If cobTrigMode.ListIndex > 1 Then
    result = D2K_AI_Config(card, 0, (CLng(cobTrigMode.ListIndex) * 8) Or CLng(cobTrigSrc.ListIndex), PostCnt, 0, 1, 1)
  Else
    result = D2K_AI_Config(card, 0, (CLng(cobTrigMode.ListIndex) * 8) Or CLng(cobTrigSrc.ListIndex) Or (CLng(cobTrigPol.ListIndex) * 4096), PostCnt, 0, 1, 1)
  End If


  result = D2K_AI_ContBufferSetup(card, gnBuffer(0), dma_size * ch_cnt, Id)
  
  'If cobTrigSrc.ListIndex = 1 Then
      'result = D2K_AIO_Config(card, cobClkSrc.ListIndex, Above_High_Level Or CH0ATRIG, CLng(cobTrigLevel.Text), CLng(cobTrigLevel.Text))
  'End If
  result = D2K_AIO_Config(card, cobClkSrc.ListIndex, (CLng(cobTrigPol.ListIndex) * 256) Or CH0ATRIG, CLng(cobTrigLevel.Text), CLng(cobTrigL_Level.Text))

  status = 0
  'result = D2K_AI_ContScanChannels(card, ch_cnt - 1, Id, dma_size, gnClkDiv * ch_cnt, gnClkDiv, ASYNCH_OP)
  result = D2K_AI_ContReadMultiChannels(card, ch_cnt, ch_num(0), Id, dma_size, gnClkDiv * ch_cnt, gnClkDiv, ASYNCH_OP)
 
  k = 0
  bStop = 0
  While status = 0 And bStop = 0
    result = D2K_AI_AsyncCheck(card, status, count1)
    If cobTrigMode.ListIndex > 1 Then
     If CLng(cobTrigSrc.ListIndex) = 0 Then
        k = k + 1
        If k = 5000 Then
            bStop = 1
        End If
     End If
    End If
  Wend
  result = D2K_AI_AsyncClear(card, startPos, count1)
  txtXfer.Caption = "Total xfer: " & CStr(count1)
  scrollView.Value = 0
  scrollView.Max = Fix((count1 - 1) / DISP_COUNT)
  ShowData 0, Min(count1, DISP_COUNT)
  btnStart.Enabled = True
End Sub

Private Sub btnStop_Click()
  Dim result As Long
  result = D2K_AI_AsyncClear(card, startPos, count1)
  bStop = 1
End Sub

Private Sub cobRate_Click()
  gnClkDiv = Val(cobRate.Text)
End Sub


'Private Sub cobTrigLevel_Click()
 ' DrawTrigLevel trigLevel, CInt(cobTrigLevel.Text)
  'trigLevel = CInt(cobTrigLevel.Text)
'End Sub

Private Sub cobTrigLevel_Click()
  If trigLLevel > CInt(cobTrigLevel.Text) Then
    MsgBox "H_TrigLevel can't be smaller than L_TrigLevel."
    cobTrigLevel.ListIndex = trigLevel / 8
    'cobTrigLevel.Text = CStr(trigLevel)
  Else
    DrawTrigLevel trigLevel, CInt(cobTrigLevel.Text), trigLLevel, trigLLevel
    trigLevel = CInt(cobTrigLevel.Text)
  End If
End Sub
Private Sub cobTrigL_Level_Click()
  If CInt(cobTrigL_Level.Text) > trigLevel Then
    MsgBox "L_TrigLevel can't be larger than H_TrigLevel."
    cobTrigL_Level.ListIndex = trigLLevel / 8
    'cobTrigL_Level.Text = CStr(trigLLevel)
  Else
    DrawTrigLevel trigLevel, CInt(cobTrigLevel.Text), trigLLevel, CInt(cobTrigL_Level.Text)
    trigLLevel = CInt(cobTrigL_Level.Text)
End If
 End Sub
Private Sub cobTrigSrc_Click()
If cobTrigSrc.ListIndex = 0 Then
    cobTrigPol.Enabled = False
    cobTrigLevel.Enabled = False
    cobTrigL_Level.Enabled = False
ElseIf cobTrigSrc.ListIndex = 1 Then
    cobTrigPol.Enabled = True
    cobTrigPol.Clear
    cobTrigPol.AddItem "BelowLowlevel"
    cobTrigPol.AddItem "AboveHighLevel"
    cobTrigPol.AddItem "Inside_Region"
    cobTrigPol.AddItem "High_Hysteresis"
    cobTrigPol.AddItem "Low_Hysteresis"
    cobTrigPol.ListIndex = 0
    cobTrigLevel.Enabled = True
    cobTrigL_Level.Enabled = True
ElseIf cobTrigSrc.ListIndex = 2 Then
    cobTrigPol.Enabled = True
    cobTrigPol.Clear
    cobTrigPol.AddItem "Positive"
    cobTrigPol.AddItem "Negative"
    cobTrigPol.ListIndex = 0
    cobTrigLevel.Enabled = False
    cobTrigL_Level.Enabled = False
End If
End Sub
Private Sub Form_Load()
    Dim result As Long
    Dim i As Integer

    SettingForm.Show 1
    If card < 0 Then
      Select Case card_type
        Case DAQ_2205:
            MsgBox "DAQ-2205 Register_Card Error"
        Case DAQ_2206:
            MsgBox "DAQ-2206 Register_Card Error"
        Case DAQ_2213:
            MsgBox "DAQ-2213 Register_Card Error"
        Case DAQ_2214:
            MsgBox "DAQ-2214 Register_Card Error"
      End Select
     End
    End If
    
    ChSettingForm.Show 1
    
    cobDataSize.AddItem "2000"
    cobDataSize.AddItem "4000"
    cobDataSize.AddItem "8000"
    cobDataSize.AddItem "20000"
    cobDataSize.AddItem "40000"
    cobDataSize.AddItem "80000"
    cobDataSize.ListIndex = 0

    cobChn.AddItem CStr(CStr(ch_num(0)))
    cobChn.AddItem CStr(CStr(ch_num(0)) + "," + CStr(ch_num(1)))
    cobChn.AddItem CStr(CStr(ch_num(0)) + "," + CStr(ch_num(1)) + "," + CStr(ch_num(2)))
    cobChn.AddItem CStr(CStr(ch_num(0)) + "," + CStr(ch_num(1)) + "," + CStr(ch_num(2)) + "," + CStr(ch_num(3)))
    cobChn.ListIndex = 0

    txtPostCount.Text = 500

    cobTrigMode.AddItem "Post-Trigger"
    cobTrigMode.AddItem "Delay-Trigger"
    cobTrigMode.AddItem "Pre-Trigger"
    cobTrigMode.AddItem "Middle-Trigger"
    cobTrigMode.ListIndex = 0

    cobTrigSrc.AddItem "Software"
    cobTrigSrc.AddItem "Analog CH0"
    cobTrigSrc.AddItem "External Digital"
    cobTrigSrc.ListIndex = 0

    cobTrigPol.AddItem "Positive"
    cobTrigPol.AddItem "Negative"
    cobTrigPol.ListIndex = 0

    For i = 0 To 31
        cobTrigLevel.AddItem i * 8
    Next
    cobTrigLevel.AddItem 255
    trigLevel = -1
    cobTrigLevel.ListIndex = 16  '128, 0V
    trigLevel = 128
    
    For i = 0 To 31
        cobTrigL_Level.AddItem i * 8
    Next
    cobTrigL_Level.AddItem 255
    trigLLevel = -1
    cobTrigL_Level.ListIndex = 16  '128, 0V
    trigLLevel = 128

    cobClkSrc.AddItem "Internal"
    cobClkSrc.AddItem "External"
    cobClkSrc.ListIndex = 0

    If card_type = 0 Then
        cobRate.AddItem "80"
        cobRate.AddItem "100"
        cobRate.AddItem "200"
        cobRate.AddItem "400"
        cobRate.AddItem "800"
        cobRate.AddItem "1000"
        cobRate.AddItem "2000"
        cobRate.AddItem "4000"
        cobRate.AddItem "5000"
        cobRate.ListIndex = 0
        gnClkDiv = 80
    Else
        cobRate.AddItem "160"
        cobRate.AddItem "200"
        cobRate.AddItem "400"
        cobRate.AddItem "800"
        cobRate.AddItem "1000"
        cobRate.AddItem "2000"
        cobRate.AddItem "4000"
        cobRate.AddItem "5000"
        cobRate.ListIndex = 0
        gnClkDiv = 160
    End If
    
    bStop = 0
    dma_size = 0
    
    Label10(0).Caption = CStr(ch_num(0))
    Label10(1).Caption = CStr(ch_num(1))
    Label10(2).Caption = CStr(ch_num(2))
    Label10(3).Caption = CStr(ch_num(3))

End Sub


Private Sub ShowData(ByVal startidx As Long, ByVal acq_count As Long)
    Dim i As Long, k As Long, n As Long
    Dim w As Long, h As Long
    Dim X As Long, Y As Long
    Dim last_x(3) As Long, last_y(3) As Long
    Dim samp As Integer, trig_pos As Long
    Dim Data As Double
    picScreen.Cls
    'DrawTrigLevel -1, trigLevel
    DrawTrigLevel -1, trigLevel, -1, trigLLevel
    lblLeft.Caption = CStr(CLng(scrollView.Value) * DISP_COUNT)
    lblRight.Caption = CStr(CLng(lblLeft) + DISP_COUNT - 1)
    w = picScreen.ScaleWidth
    h = picScreen.ScaleHeight

    For i = 0 To 3
      last_x(i) = -1
      last_y(i) = -1
    Next
    For i = 0 To acq_count - 1
        k = (startidx + i) Mod ch_cnt
        n = (startidx + i + startPos) Mod count1
        X = (i * w) / (DISP_COUNT - 1)
        samp = gnBuffer(n)
        
        If ch_range(k) > 13 Then
         Data = (samp + 32768) * h / 65536 / 2
         Y = h / 2 - Data / (2 ^ (ch_range(k) - 15))
        Else
         Y = CInt((32767 - CLng(samp) / (2 ^ (ch_range(k) - 1))) * h / 65535)
        End If
        If last_y(k) <> -1 Then
            picScreen.Line (last_x(k), last_y(k))-(X, Y), shpColor(k).BackColor
        End If
        last_x(k) = X
        last_y(k) = Y
    Next
    'Set trigger position
    Select Case cobTrigMode.ListIndex
      Case DAQ2K_AI_TRGMOD_POST / 8
        trig_pos = 0
      Case DAQ2K_AI_TRGMOD_PRE / 8
        trig_pos = count1 - 1
      Case DAQ2K_AI_TRGMOD_DELAY / 8
        trig_pos = -1
      Case DAQ2K_AI_TRGMOD_MIDL / 8
        trig_pos = count1 - CLng(txtPostCount.Text) * ch_cnt
    End Select
    If CLng(lblLeft) <= trig_pos And CLng(lblRight) >= trig_pos Then
      TriggerPos.Visible = True
      TriggerPos.Left = (picScreen.Left - 60) + ((trig_pos - CLng(lblLeft)) * w * Screen.TwipsPerPixelX) / (DISP_COUNT - 1)
    Else
      TriggerPos.Visible = False
    End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
  Dim result As Long
   If card >= 0 Then
      D2K_Release_Card (card)
   End If
End Sub

Private Sub mnuExit_Click()
  If card >= 0 Then D2K_Release_Card (card)
  End
End Sub

Private Sub scrollView_Change()
  Dim idx As Long
  idx = CLng(scrollView.Value) * DISP_COUNT
  'startPos = 0
  ShowData idx Mod count1, Min(count1 - idx, DISP_COUNT)
End Sub
'Private Sub DrawTrigLevel(ByVal old_level As Integer, ByVal level As Integer)
 '   Dim w As Long, h As Long
  '  Dim Y As Long
   ' w = picScreen.ScaleWidth
    'h = picScreen.ScaleHeight
    'If old_level <> -1 Then
     '   Y = h * (255 - old_level) / 255
      '  picScreen.Line (0, Y)-(w, Y), &H0
    'End If
    'Y = h * (255 - level) / 255
    'picScreen.Line (0, Y)-(w, Y), &H909090
'End Sub
Private Sub DrawTrigLevel(ByVal old_level As Integer, ByVal level As Integer, ByVal old_llevel As Integer, ByVal llevel As Integer)
    Dim w As Long, h As Long
    Dim Y As Long

    w = picScreen.ScaleWidth
    h = picScreen.ScaleHeight
    If old_level <> -1 Then
        Y = h * (255 - old_level) / 255
        picScreen.Line (0, Y)-(w, Y), &H0
    End If
    If old_llevel <> -1 Then
        Y = h * (255 - old_llevel) / 255
        picScreen.Line (0, Y)-(w, Y), &H0
    End If
    Y = h * (255 - level) / 255
    picScreen.Line (0, Y)-(w, Y), &H909090
    Y = h * (255 - llevel) / 255
    picScreen.Line (0, Y)-(w, Y), &HBBBBBB
End Sub


Private Function Min(ByVal v1 As Long, ByVal v2 As Long) As Long
  If v1 < v2 Then
    Min = v1
  Else
    Min = v2
  End If
End Function

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -