📄 global.bas
字号:
Attribute VB_Name = "Global"
Option Explicit
Public State As Long
Public Const STATE_Begin = 0
Public Const STATE_Ready = 1
Public Const STATE_Run = 2
Public Const STATE_Setting = 1
Public Const MODE_Cyclic = 1
Public Const MODE_Noncyclic = 0
Public Const MODE_Internal = 0
Public Const MODE_External = 1
Public Const MODE_EventEnable = 1
Public Const MODE_EventDisable = 0
Public Const WAVE_Sine = 0
Public Const WAVE_Triangle = 1
Public Const WAVE_Square = 2
Public Waveform As Long
Public Magnitude As Single
Public Offset As Single
Public Accuracy As Long
Public PacerRate As Long
Public Conv As Long
Public OutputChannel As Long
Public CyclicMode As Long
Public TriggerSource As Long
Public EventMode As Long
Public PacerRate1 As Long
Public Conv1 As Long
Public OutputChannel1 As Long
Public CyclicMode1 As Long
Public TriggerSource1 As Long
Public EventMode1 As Long
Public ErrCde As Long
Dim ErrMsg As String
Public Buf() As Integer
Public VoltageBuf() As Single
Public BinaryBuf() As Integer
Public DeviceList(0 To 255) As PT_DEVLIST
Public DeviceNum As Long
Public DriverHandle As Long
Public ActualBufSize As Integer
Public buffer As Long
Public RepeatCount As Integer
Public ptFAODmaStart As PT_FAODmaStart
Public ptFAOLoad As PT_FAOLoad
Public ptFAOScale As PT_FAOScale
Public ptFAOCheck As PT_FAOCheck
Public ptEnableEvent As PT_EnableEvent
Public ptCheckEvent As PT_CheckEvent
Public ptAllocateDMABuffer As PT_AllocateDMABuffer
Dim szBuffer As String
Dim szDescript As String
Public Const MF_BYPOSITION = &H400
Public Const MF_REMOVE = &H1000
Public Declare Function DrawMenuBar Lib "user32" _
(ByVal HWND As Long) As Long
Public Declare Function GetMenuItemCount Lib "user32" _
(ByVal hMenu As Long) As Long
Public Declare Function GetSystemMenu Lib "user32" _
(ByVal HWND As Long, ByVal bRevert As Long) As Long
Public Declare Function RemoveMenu Lib "user32" _
(ByVal hMenu As Long, ByVal nPosition As Long, _
ByVal wFlags As Long) As Long
Sub SetState(s As Integer)
If s = STATE_Begin Then
State = STATE_Begin
Form1.Combo1.Enabled = True
Form1.btSetting.Enabled = False
Form1.btRun.Enabled = False
Form1.btStop.Enabled = False
Form1.CmbSelectWaveform.Enabled = True
Form1.EditMagnitude.Enabled = True
Form1.EditOffset.Enabled = True
Form1.EditAccuracy.Enabled = True
Form1.btExit.Enabled = True
Else
If s = STATE_Ready Then
State = STATE_Ready
Form1.Combo1.Enabled = True
Form1.btSetting.Enabled = True
Form1.btRun.Enabled = True
Form1.btStop.Enabled = False
Form1.CmbSelectWaveform.Enabled = True
Form1.EditMagnitude.Enabled = True
Form1.EditOffset.Enabled = True
Form1.EditAccuracy.Enabled = True
Form1.btExit.Enabled = True
Else
If s = STATE_Run Then
State = STATE_Run
Form1.Combo1.Enabled = False
Form1.btSetting.Enabled = False
Form1.btRun.Enabled = False
Form1.btStop.Enabled = True
Form1.CmbSelectWaveform.Enabled = False
Form1.EditMagnitude.Enabled = False
Form1.EditOffset.Enabled = False
Form1.EditAccuracy.Enabled = False
Form1.btExit.Enabled = False
Else
If s = STATE_Setting Then
State = STATE_Setting
Form1.Combo1.Enabled = False
Form1.btSetting.Enabled = False
Form1.btRun.Enabled = False
Form1.btStop.Enabled = False
Form1.CmbSelectWaveform.Enabled = False
Form1.EditMagnitude.Enabled = False
Form1.EditOffset.Enabled = False
Form1.EditAccuracy.Enabled = False
Form1.btExit.Enabled = False
End If
End If
End If
End If
End Sub
Sub RemoveX(HWND As Long)
Dim hMenu As Long
Dim menuItemCount As Long
hMenu = GetSystemMenu(HWND, 0)
If hMenu Then
menuItemCount = GetMenuItemCount(hMenu)
RemoveMenu hMenu, menuItemCount - 1, MF_REMOVE Or MF_BYPOSITION
RemoveMenu hMenu, menuItemCount - 2, MF_REMOVE Or MF_BYPOSITION
DrawMenuBar HWND
End If
End Sub
Function FnPtrToLong(ByVal lngFnPtr As Long) As Long
FnPtrToLong = lngFnPtr
End Function
Sub SetRealBuffer(num As Long)
Dim i, r, half As Long
Dim slope As Single
Buf(0) = Buf(0) + 1
If Waveform = WAVE_Sine Then
For i = 0 To num - 1
VoltageBuf(i) = Magnitude * Sin(6.28318 * i / Accuracy) + Offset
Next i
Else
If Waveform = WAVE_Triangle Then
slope = Magnitude * 4 / Accuracy
For i = 0 To num - 1
r = i Mod Accuracy
half = Int(Accuracy / 2)
If r <= half Then
VoltageBuf(i) = slope * r - Magnitude + Offset
Else
VoltageBuf(i) = slope * (Accuracy - r) - Magnitude + Offset
End If
Next i
Else
If Waveform = WAVE_Square Then
For i = 0 To num - 1
r = i Mod Accuracy
half = Int(Accuracy / 2)
If r <= half Then
VoltageBuf(i) = Offset - Magnitude
Else
VoltageBuf(i) = Offset + Magnitude
End If
Next i
End If
End If
End If
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -