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

📄 vb9111.frm

📁 PCI9111卡的采集例子程序
💻 FRM
📖 第 1 页 / 共 4 页
字号:
      Appearance      =   0  'Flat
      Height          =   210
      Index           =   0
      Left            =   -180
      Picture         =   "vb9111.frx":43C4
      Top             =   5760
      Visible         =   0   'False
      Width           =   270
   End
   Begin VB.Image ChDn 
      Appearance      =   0  'Flat
      Height          =   210
      Index           =   1
      Left            =   60
      Picture         =   "vb9111.frx":44EE
      Top             =   5760
      Visible         =   0   'False
      Width           =   270
   End
   Begin VB.Image ChDn 
      Appearance      =   0  'Flat
      Height          =   210
      Index           =   2
      Left            =   300
      Picture         =   "vb9111.frx":4618
      Top             =   5760
      Visible         =   0   'False
      Width           =   270
   End
   Begin VB.Image ChDn 
      Appearance      =   0  'Flat
      Height          =   210
      Index           =   3
      Left            =   540
      Picture         =   "vb9111.frx":4742
      Top             =   5760
      Visible         =   0   'False
      Width           =   270
   End
   Begin VB.Image ChDn 
      Appearance      =   0  'Flat
      Height          =   210
      Index           =   4
      Left            =   780
      Picture         =   "vb9111.frx":486C
      Top             =   5760
      Visible         =   0   'False
      Width           =   270
   End
   Begin VB.Image ChDn 
      Appearance      =   0  'Flat
      Height          =   210
      Index           =   5
      Left            =   1020
      Picture         =   "vb9111.frx":4996
      Top             =   5760
      Visible         =   0   'False
      Width           =   270
   End
   Begin VB.Image ChDn 
      Appearance      =   0  'Flat
      Height          =   210
      Index           =   6
      Left            =   1260
      Picture         =   "vb9111.frx":4AC0
      Top             =   5760
      Visible         =   0   'False
      Width           =   270
   End
   Begin VB.Image ChDn 
      Appearance      =   0  'Flat
      Height          =   210
      Index           =   7
      Left            =   1500
      Picture         =   "vb9111.frx":4BEA
      Top             =   5760
      Visible         =   0   'False
      Width           =   270
   End
   Begin VB.Image ChUp 
      Appearance      =   0  'Flat
      Height          =   210
      Index           =   0
      Left            =   -180
      Picture         =   "vb9111.frx":4D14
      Top             =   5940
      Visible         =   0   'False
      Width           =   270
   End
   Begin VB.Image ChUp 
      Appearance      =   0  'Flat
      Height          =   210
      Index           =   1
      Left            =   60
      Picture         =   "vb9111.frx":4E3E
      Top             =   5940
      Visible         =   0   'False
      Width           =   270
   End
   Begin VB.Image ChUp 
      Appearance      =   0  'Flat
      Height          =   210
      Index           =   2
      Left            =   300
      Picture         =   "vb9111.frx":4F68
      Top             =   5940
      Visible         =   0   'False
      Width           =   270
   End
   Begin VB.Image ChUp 
      Appearance      =   0  'Flat
      Height          =   210
      Index           =   3
      Left            =   540
      Picture         =   "vb9111.frx":5092
      Top             =   5940
      Visible         =   0   'False
      Width           =   270
   End
   Begin VB.Image ChUp 
      Appearance      =   0  'Flat
      Height          =   210
      Index           =   4
      Left            =   780
      Picture         =   "vb9111.frx":51BC
      Top             =   5940
      Visible         =   0   'False
      Width           =   270
   End
   Begin VB.Image ChUp 
      Appearance      =   0  'Flat
      Height          =   210
      Index           =   5
      Left            =   1020
      Picture         =   "vb9111.frx":52E6
      Top             =   5940
      Visible         =   0   'False
      Width           =   270
   End
   Begin VB.Image ChUp 
      Appearance      =   0  'Flat
      Height          =   210
      Index           =   6
      Left            =   1260
      Picture         =   "vb9111.frx":5410
      Top             =   5940
      Visible         =   0   'False
      Width           =   270
   End
   Begin VB.Image ChUp 
      Appearance      =   0  'Flat
      Height          =   210
      Index           =   7
      Left            =   1500
      Picture         =   "vb9111.frx":553A
      Top             =   5940
      Visible         =   0   'False
      Width           =   270
   End
End
Attribute VB_Name = "util9111"
Attribute VB_Creatable = False
Attribute VB_Exposed = False
Option Explicit

Dim PrevP(15) As Long
Dim ChannelOn(15) As Long
Dim SignalColor(15) As Long
Dim range_value(5) As Integer
Dim Active As Long
Dim NewStart As Long
Dim status(15) As Long
Dim angle As Single
Dim sq As Integer
Dim gnAddr As Long
Dim gnIrq As Long
Dim gnDoValue As Long

Const SINE_WAVE = 0
Const SQUARE_WAVE = 1
Const Pi = 3.14159

Private Sub Channel_Click(Index As Integer)
  If ChannelOn(Index) Then
    If Index < 8 Then
      Channel(Index) = ChUp(Index)
    Else
      Channel(Index) = ChUp(Index - 8)
    End If
  Else
    If Index < 8 Then
      Channel(Index) = ChDn(Index)
    Else
      Channel(Index) = ChDn(Index - 8)
    End If
  End If
  ChannelOn(Index) = Not ChannelOn(Index)
End Sub

Sub Combo1_Change()
End Sub

Private Sub DOP_Click(Index As Integer)
  Dim i As Integer
  Dim v As Integer, d As Long
  Dim do_data As Integer
  If Active Then
    If status(Index) = 1 Then
      DOP(Index) = Image0
      status(Index) = 0
      d = 1
      For i = 1 To Index
        d = d * 2
      Next
      gnDoValue = gnDoValue - d
    Else
      DOP(Index) = Image1
      status(Index) = 1
      d = 1
      For i = 1 To Index
        d = d * 2
      Next
      gnDoValue = gnDoValue + d
    End If
    'translate unsigned value to signed integer
    If (gnDoValue > 32767) Then
      do_data = gnDoValue - 65536
    Else
      do_data = gnDoValue
    End If
    'v = W_9111_DO(0, do_data)
    v = DO_WritePort(card, 0, gnDoValue)
  End If
End Sub

Private Sub ExitBtn_Click()
    Dim result As Integer
    If card >= 0 Then
        result = Release_Card(card)
    End If
    End
End Sub

Private Sub Form_Load()
  Dim result As Integer
  Dim i As Integer

  SettingForm.Show 1
  If card < 0 Then
    MsgBox "Register card failed."
    End
  End If
  For i = 0 To 15
    PrevP(i) = -1
    ChannelOn(i) = False
  Next
  For i = 0 To 15
    status(i) = 0
  Next
  NewStart = True
  Active = False
  gnDoValue = 0
  result = DO_WritePort(card, 0, gnDoValue)

  gain.AddItem "+/- 10V"
  gain.AddItem "+/- 5V"
  gain.AddItem "+/- 2.5V"
  gain.AddItem "+/- 1.25V"
  gain.AddItem "+/- 0.625V"
  
  'CardName.AddItem "9111DG"
  'CardName.AddItem "9111HR"
  
  range_value(0) = 1
  range_value(1) = 2
  range_value(2) = 3
  range_value(3) = 4
  range_value(4) = 5
  
  gain.ListIndex = 0
  'CardName.ListIndex = 0
  
  DA_Wave.AddItem "Sine Wave"
  DA_Wave.AddItem "Square Wave"
  DA_Wave.ListIndex = 0
  
  SignalColor(0) = &HFFFF&
  SignalColor(1) = &H8000&
  SignalColor(2) = &HFF0000
  SignalColor(3) = &HFF&
  SignalColor(4) = &HFFFF00
  SignalColor(5) = &HFF00FF
  SignalColor(6) = &HFF00&
  SignalColor(7) = &HFFFFFF
  SignalColor(8) = &HFFFF&
  SignalColor(9) = &H8000&
  SignalColor(10) = &HFF0000
  SignalColor(11) = &HFF&
  SignalColor(12) = &HFFFF00
  SignalColor(13) = &HFF00FF
  SignalColor(14) = &HFF00&
  SignalColor(15) = &HFFFFFF

End Sub

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


Private Sub Gain_Click()
  Dim result As Long
        Scale_Change gain.ListIndex
End Sub













Private Sub PauseBtn_Click()
  Timer1.Enabled = False
  Active = False
  NewStart = False
  StartBtn.Enabled = True
  PauseBtn.Enabled = False
  
End Sub




Private Sub StartBtn_Click()
  StartBtn.Enabled = False
  StopBtn.Enabled = True
  PauseBtn.Enabled = True
  
  Active = True

  If NewStart Then
    Signal(0).Cls
    Signal(1).Cls
    gnDoValue = 0
    angle = 0
    sq = 0
  End If

  Timer1.Enabled = True
  
End Sub

Private Sub StopBtn_Click()
  Dim i As Integer
  Timer1.Enabled = False
  For i = 0 To 15
    PrevP(i) = -1
  Next
  For i = 0 To 15
    status(i) = 0
    DOP(i) = Image0
  Next
  i = DO_WritePort(card, 0, 0)
  Active = False
  NewStart = True
  StartBtn.Enabled = True
  StopBtn.Enabled = False
  PauseBtn.Enabled = False
  
End Sub

Private Sub Timer1_Timer()
  Dim result As Integer
  Dim i As Integer, j As Integer, d As Integer
  Dim l As Long
  Dim di_data As Long
  Dim p As Integer
  Dim m As Single
  Static vt(15) As Variant
  
'  Do While Contd
'Analog-Digital Input
    result = BitBlt(Signal(0).hDC, 4, 0, Signal(0).Width / Screen.TwipsPerPixelX, Signal(0).Height / Screen.TwipsPerPixelY, Signal(0).hDC, 0, 0, SRCCOPY)
    result = BitBlt(Signal(1).hDC, 4, 0, Signal(1).Width / Screen.TwipsPerPixelX, Signal(1).Height / Screen.TwipsPerPixelY, Signal(1).hDC, 0, 0, SRCCOPY)
    For i = 0 To 15
      If ChannelOn(i) Then
        result = AI_ReadChannel(card, i, range_value(gain.ListIndex), d)
        l = d
        If card_type Then
         If i < 8 Then
          p = (32767 - CSng(l)) / 65535 * (Signal(0).Height / Screen.TwipsPerPixelY - 2)
          If PrevP(i) <> -1 Then Signal(0).Line (4, p)-(8, PrevP(i)), SignalColor(i)
         Else
          p = (32767 - CSng(l)) / 65535 * (Signal(1).Height / Screen.TwipsPerPixelY - 2)
          If PrevP(i) <> -1 Then
            Signal(1).Line (4, p)-(8, PrevP(i)), SignalColor(i)
          End If
         End If
        Else
         l = l / 16
         If i < 8 Then
          p = (2047 - CSng(l)) / 4095 * (Signal(0).Height / Screen.TwipsPerPixelY - 2)
          If PrevP(i) <> -1 Then Signal(0).Line (4, p)-(8, PrevP(i)), SignalColor(i)
         Else
          p = (2047 - CSng(l)) / 4095 * (Signal(1).Height / Screen.TwipsPerPixelY - 2)
          If PrevP(i) <> -1 Then
            Signal(1).Line (4, p)-(8, PrevP(i)), SignalColor(i)
          End If
         End If
        End If
         PrevP(i) = p
      End If
    Next i

'Digital Input
    result = DI_ReadPort(card, 0, l)
    If (l < 0) Then
      di_data = l + 65536
    Else
      di_data = l
    End If
    For i = 0 To 15
      p = di_data Mod 2
      If p = 0 Then
        DI(i) = Image0
      Else 'p = 1
        DI(i) = Image1
      End If
      di_data = CLng(Fix(di_data / 2))
    Next i
  
'Analog Output
    Select Case DA_Wave.ListIndex
      Case SINE_WAVE:
        m = Sin(angle)
        angle = angle + Pi / 36
        p = CInt(m * 2048 + 2048)
        If p >= 4096 Then p = 4095
        result = AO_WriteChannel(card, 0, p)
      Case SQUARE_WAVE:
        result = AO_WriteChannel(card, 0, sq)
        If (angle Mod 36) = 0 Then
          If sq = 0 Then sq = 4095 Else sq = 0
        End If
        angle = angle + 1
      End Select
End Sub




⌨️ 快捷键说明

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