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

📄 counterform.frm

📁 16 relay output channels and 16 isolated digital input channels LED indicators to show activated
💻 FRM
📖 第 1 页 / 共 2 页
字号:
   ptDevGetFeatures.buffer = DRV_GetAddress(ptDevFeatures)

   ErrorNum = DRV_DeviceGetFeatures(DriverHandle, ptDevGetFeatures)
   If CheckError(ErrorNum) <> 0 Then
      DRV_DeviceClose (DriverHandle)
      Exit Sub
   End If

   ' check number of counter channels
   If ptDevFeatures.usMaxTimerChl = 0 Then
      MsgBox "No Counter Channel", vbInformation, "Driver Message"
      DRV_DeviceClose (DriverHandle)
      Exit Sub
   End If
   
   'count sourc
   Select Case cmbCntSrc.ListIndex
          Case 0
          usCountSrc = PA_MODE_COUNT_SRC_OUT_N_M1
          Case 1
          usCountSrc = PA_MODE_COUNT_SRC_CLK_N
          Case 2
          usCountSrc = PA_MODE_COUNT_SRC_CLK_N_M1
          Case 3
          usCountSrc = PA_MODE_COUNT_SRC_FOUT_0
          Case 4
          usCountSrc = PA_MODE_COUNT_SRC_FOUT_1
          Case 5
          If (lBoardID = BD_PCM3780) Then
          usCountSrc = PA_MODE_COUNT_SRC_GATE_N_M1
          Else
          usCountSrc = PA_MODE_COUNT_SRC_FOUT_2
          End If
          Case 6
          usCountSrc = PA_MODE_COUNT_SRC_FOUT_3
          Case 7
          usCountSrc = PA_MODE_COUNT_SRC_GATE_N_M1
          Case Else
          usCountSrc = PA_MODE_COUNT_SRC_CLK_N
    End Select
    
    'count mode
    Select Case cmbCntMode.ListIndex
           Case 0
           usMode = MODE_A
           Case 1
           usMode = MODE_B
           Case 2
           usMode = MODE_C
           Case 3
           usMode = MODE_D
           Case 4
           usMode = MODE_E
           Case 5
           usMode = MODE_F
           Case 6
           usMode = MODE_G
           Case 7
           usMode = MODE_H
           Case 8
           usMode = MODE_I
           Case 9
           usMode = MODE_J
           Case 10
           usMode = MODE_K
           Case 11
           usMode = MODE_L
           Case 12
           usMode = MODE_O
           Case 13
           usMode = MODE_R
           Case 14
           usMode = MODE_U
           Case 15
           usMode = MODE_X
           Case Else
           usMode = MODE_A
    End Select
    
    'channel
    usChannel = Val(cmbChannel.Text)
    'initial value
    usInitValue = Val(txtIniVal.Text)
    'counting edge
    If (opRising.value = True) Then
        usCntEdge = PA_MODE_COUNT_RISE_EDGE
    Else
        usCntEdge = PA_MODE_COUNT_FALL_EDGE
    End If
    
    'counting direction
    If (opUp.value = True) Then
        usCntDir = PA_MODE_COUNT_UP
    Else
        usCntDir = PA_MODE_COUNT_DOWN
    End If
    
    'output control
    If (opEnable.value = True) Then
        usOutputEnable = PA_MODE_ENABLE_OUTPUT
        Select Case cmbOPMode.ListIndex
               Case 0
               usOutputMode = PA_MODE_ACT_HIGH_TC_PULSE
               Case 1
               usOutputMode = PA_MODE_ACT_LOW_TC_PULSE
               Case 2
               usOutputMode = PA_MODE_TC_TOGGLE_FROM_LOW
               Case 3
               usOutputMode = PA_MODE_TC_TOGGLE_FROM_HIGH
               Case Else
               usOutputMode = PA_MODE_ACT_HIGH_TC_PULSE
        End Select
    Else
        usOutputEnable = PA_MODE_DISABLE_OUTPUT
        usOutputMode = 0
    End If
    
    'Gate parameters
    
    If (frmGateMode.Enabled = True) Then
        bGateEnable = True
        Select Case cmbGateSrc.ListIndex
               Case 0
               usGateSrc = PA_MODE_GATE_SRC_OUT_N_M1
               Case 1
               usGateSrc = PA_MODE_GATE_SRC_GATE_N
               Case 2
               usGateSrc = PA_MODE_GATE_SRC_GATE_N_M1
               Case Else
               usGateSrc = PA_MODE_GATE_SRC_GATE_N
        End Select
        If (opHiLv.value = True) Then
           usGatePl = PA_MODE_GATE_POSITIVE
        Else
           usGatePl = PA_MODE_GATE_NEGATIVE
        End If
    Else
        usGateSrc = PA_MODE_GATE_SRC_GATE_NO
        usGatePl = 0
        bGateEnable = False
    End If
    
    'start counter
    ptCounterConfig.usCounter = usChannel
    ptCounterConfig.usInitValue = usInitValue
    ptCounterConfig.usCountMode = usMode
    ptCounterConfig.usCountDirect = usCntDir
    ptCounterConfig.usCountEdge = usCntEdge
    ptCounterConfig.usOutputEnable = usOutputEnable
    ptCounterConfig.usOutputMode = usOutputMode
    ptCounterConfig.usClkSrc = usCountSrc
    ptCounterConfig.usGateSrc = usGateSrc
    ptCounterConfig.usGatePolarity = usGatePl
    
    ErrorNum = DRV_CounterConfig(DriverHandle, ptCounterConfig)
    If CheckError(ErrorNum) <> 0 Then
      DRV_DeviceClose (DriverHandle)
      Exit Sub
    End If
   
   ptCounterEventStart.counter = usChannel
   
   ErrorNum = DRV_CounterEventStart(DriverHandle, ptCounterEventStart)
   If CheckError(ErrorNum) <> 0 Then
      DRV_DeviceClose (DriverHandle)
      Exit Sub
   End If
   
   'enable event
   If (opIntEnable.value = True) Then
       ptEnableEvent.Enabled = 1
       ptEnableEvent.Count = 1
       Select Case usChannel
              Case 0
              ptEnableEvent.EventType = ADS_EVT_TERMINATE_CNT0
              Case 1
              ptEnableEvent.EventType = ADS_EVT_TERMINATE_CNT1
              Case 2
              ptEnableEvent.EventType = ADS_EVT_TERMINATE_CNT2
              Case 3
              ptEnableEvent.EventType = ADS_EVT_TERMINATE_CNT3
              Case 4
              ptEnableEvent.EventType = ADS_EVT_TERMINATE_CNT4
              Case 5
              ptEnableEvent.EventType = ADS_EVT_TERMINATE_CNT5
              Case 6
              ptEnableEvent.EventType = ADS_EVT_TERMINATE_CNT6
              Case 7
              ptEnableEvent.EventType = ADS_EVT_TERMINATE_CNT7
      End Select
      ErrorNum = DRV_EnableEvent(DriverHandle, ptEnableEvent)
      If CheckError(ErrorNum) <> 0 Then
          DRV_DeviceClose (DriverHandle)
          Exit Sub
      End If
      
      EventTimer.Enabled = True
    End If
    
    ReadCntTimer.Enabled = True
    cmdStart.Enabled = False
    frmChannel.Enabled = False
    frmCntMode.Enabled = False
    frmCntSrc.Enabled = False
    frmIniVal.Enabled = False
    frmCntEdge.Enabled = False
    frmCntDir.Enabled = False
    frmOPCtrl.Enabled = False
    frmOutput.Enabled = False
    frmGateMode.Enabled = False
    frmTcInt.Enabled = False
    cmdStop.Enabled = True
    cmdDevSelect.Enabled = False
           
           
End Sub

Private Sub cmdStop_Click()
    Dim ReturnValue As Long
    ReadCntTimer.Enabled = False
    If (opIntEnable.value = True) Then
        EventTimer.Enabled = False
        ptEnableEvent.Enabled = False
        ptEnableEvent.Count = 1
        ErrorNum = DRV_EnableEvent(DriverHandle, ptEnableEvent)
        CheckError (ErrorNum)
    End If
    
    ErrorNum = DRV_CounterReset(DriverHandle, usChannel)
    CheckError (ErrorNum)
    DRV_DeviceClose (DriverHandle)
    bRun = False
    
    cmdStart.Enabled = True
    frmChannel.Enabled = True
    frmCntMode.Enabled = True
    frmCntSrc.Enabled = True
    frmIniVal.Enabled = True
    frmCntEdge.Enabled = True
    frmCntDir.Enabled = True
    frmOPCtrl.Enabled = True
    If (opEnable.value = True) Then
        frmOutput.Enabled = True
    End If
    If (bGateEnable = True) Then
        frmGateMode.Enabled = True
    End If
    
    frmTcInt.Enabled = True
    cmdStop.Enabled = False
    cmdDevSelect.Enabled = True
           
        
End Sub

Private Sub EventTimer_Timer()
    Dim usEventType As Integer
    Dim response As Integer
    usEventType = 0
    'Dim ErrorNum As Long
    Dim ptCheckEvent As PT_CheckEvent
    
    ptCheckEvent.EventType = DRV_GetAddress(usEventType)
    ptCheckEvent.Milliseconds = 1000
    
    ErrorNum = DRV_CheckEvent(DriverHandle, ptCheckEvent)
    If CheckError(ErrorNum) <> 0 Then
       Exit Sub
    End If
    Select Case usEventType
           Case ADS_EVT_TERMINATE_CNT0
           reponse = MsgBox("Counter0 Terminal Event Occured!", vbOKOnly, "Interrupt Message")
           Case ADS_EVT_TERMINATE_CNT1
           reponse = MsgBox("Counter1 Terminal Event Occured!", vbOKOnly, "Interrupt Message")
           Case ADS_EVT_TERMINATE_CNT2
           reponse = MsgBox("Counter2 Terminal Event Occured!", vbOKOnly, "Interrupt Message")
           Case ADS_EVT_TERMINATE_CNT3
           reponse = MsgBox("Counter3 Terminal Event Occured!", vbOKOnly, "Interrupt Message")
           Case ADS_EVT_TERMINATE_CNT4
           reponse = MsgBox("Counter4 Terminal Event Occured!", vbOKOnly, "Interrupt Message")
           Case ADS_EVT_TERMINATE_CNT5
           reponse = MsgBox("Counter5 Terminal Event Occured!", vbOKOnly, "Interrupt Message")
           Case ADS_EVT_TERMINATE_CNT6
           reponse = MsgBox("Counter6 Terminal Event Occured!", vbOKOnly, "Interrupt Message")
           Case ADS_EVT_TERMINATE_CNT7
           reponse = MsgBox("Counter7 Terminal Event Occured!", vbOKOnly, "Interrupt Message")
    End Select
        
End Sub

Private Sub Form_Load()
   Dim Description As String
   Dim i As Integer
   
   Description = String(80, vbNullChar)
   ErrorNum = DRV_SelectDevice(hWnd, False, DeviceNum, Description)
   labDevName.Caption = Description
   bRun = False
   
   ErrorNum = DRV_DeviceOpen(DeviceNum, DriverHandle)
   If CheckError(ErrorNum) <> 0 Then
      Exit Sub
   End If
   
   ptDevGetFeatures.buffer = DRV_GetAddress(ptDevFeatures)

   ErrorNum = DRV_DeviceGetFeatures(DriverHandle, ptDevGetFeatures)
   If CheckError(ErrorNum) <> 0 Then
      DRV_DeviceClose (DriverHandle)
      Exit Sub
   End If

   lBoardID = ptDevFeatures.dwBoardID
   usMaxCntNum = ptDevFeatures.usMaxTimerChl
   
   DRV_DeviceClose (DriverHandle)
   cmbChannel.Clear
   i = 0
   While (i < usMaxCntNum)
      cmbChannel.AddItem (Str(i))
      i = i + 1
   Wend
   
   cmbCntSrc.Clear
   cmbCntSrc.AddItem ("OUT N-1")
   cmbCntSrc.AddItem ("CLK N")
   cmbCntSrc.AddItem ("CLK N-1")
   cmbCntSrc.AddItem ("FOUT 0")
   cmbCntSrc.AddItem ("FOUT 1")
   If (lBoardID <> BD_PCM3780) Then
      cmbCntSrc.AddItem ("FOUT 2")
      cmbCntSrc.AddItem ("FOUT 3")
   End If
   cmbCntSrc.AddItem ("GATE N-1")
   
   cmbChannel.ListIndex = 0
   cmbCntMode.ListIndex = 0
   cmbCntSrc.ListIndex = 1
   txtIniVal.Text = "1"
   cmbGateSrc.ListIndex = 1
   cmbOPMode.ListIndex = 0
   opRising.value = True
   opUp.value = True
   opEnable.value = True
   opHiLv.value = True
   opIntDisable.value = True
   frmGateMode.Enabled = False
End Sub

Private Sub Form_Unload(Cancel As Integer)
    If (bRun = True) Then
        Call cmdStop_Click
    End If
    
End Sub


Private Sub opDisable_Click()
    If (opDisable.value = True) Then
        frmOutput.Enabled = False
    End If
End Sub

Private Sub opEnable_Click()
    If (opEnable.value = True) Then
        frmOutput.Enabled = True
    End If
    
End Sub

Private Sub ReadCntTimer_Timer()
    Dim ptCounterEventRead As PT_CounterEventRead
    Dim gwOverflow As Long
    Dim gdwReading As Long
    
    ptCounterEventRead.counter = usChannel
    ptCounterEventRead.overflow = DRV_GetAddress(gwOverflow)
    ptCounterEventRead.Count = DRV_GetAddress(gdwReading)
    
    ErrorNum = DRV_CounterEventRead(DriverHandle, ptCounterEventRead)
    If CheckError(ErrorNum) <> 0 Then
      Call cmdStop_Click
      Exit Sub
   End If
   
   labResult.Caption = Str(gdwReading)

End Sub

⌨️ 快捷键说明

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