📄 vb9111.frm
字号:
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 + -