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

📄 global.bas

📁 16 relay output channels and 16 isolated digital input channels LED indicators to show activated
💻 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 + -