global.bas

来自「16 relay output channels and 16 isolated」· BAS 代码 · 共 90 行

BAS
90
字号
Attribute VB_Name = "Module2"
Global Const MaxEntries = 255
Global Const MaxChannels = 64 - 1
Global DeviceHandle As Long
Global ptDevGetFeatures As PT_DeviceGetFeatures
Global lpDevFeatures As DEVFEATURES
Global ptAIGetConfig As PT_AIGetConfig
Global lpDEVCONFIG_AI As DEVCONFIG_AI
Global devicelist(0 To MaxEntries) As PT_DEVLIST
Global SubDevicelist(0 To MaxEntries) As PT_DEVLIST
Global ErrCde As Long
Global szErrMsg As String * 80
Global bRun As Boolean

Global AiCtrMode As Integer
Global usGainIndex(0 To MaxChannels) As Integer
Global usGainCode(0 To MaxChannels) As Integer
Global usStartChan As Integer             ' Start Channel
Global usNumChan As Integer               ' Number of Channels
Global ptMAIConfig As PT_MAIConfig        ' Structure for MAIConfig table
Global ptMAIVoltageIn As PT_MAIVoltageIn  ' Structure for MAIVoltageIn table
Global dwDeviceNum As Long

Public Const LVS_EX_GRIDLINES = &H1
Public Const LVS_EX_FULLROWSELECT = &H20
Public Const LVM_FIRST As Long = &H1000
Public Const LVM_SETEXTENDEDLISTVIEWSTYLE As Long = (LVM_FIRST + 54)
Public Const LVM_GETEXTENDEDLISTVIEWSTYLE As Long = (LVM_FIRST + 55)

Public Declare Function SendMessageLong Lib "user32" _
    Alias "SendMessageA" _
    (ByVal hwnd As Long, _
    ByVal Msg As Long, _
    ByVal wParam As Long, _
    ByVal lParam As Long) As Long
Public Function Min(ByVal a As Long, ByVal b As Long) As Long
 If a < b Then
     Min = a
 Else
     Min = b
 End If
End Function

Public Function SHL(OPR As Long, n As Integer) As Long
Dim BD As Long
Dim i As Integer

    If n = 31 Then
        SHL = &H80000000
        Exit Function
    End If
    
    BD = OPR
    For i = 1 To n - 1
        BD = (BD And &H7FFFFFFF) * 2 'mask and shift left the D31 bit to avoid byte overflow
    Next i
    SHL = (BD And &H7FFFFFFF) * 2
End Function

Public Function PhyChanToLogChan(byDevCfg As DEVCONFIG_AI, ByVal byPhyChan As Long) As Long
    Dim i As Integer
    
    PhyChanToLogChan = 0
    
    If byDevCfg.ulChanConfig = 1 Then
        PhyChanToLogChan = byPhyChan
        Exit Function
    End If
    
    
    For i = 0 To Min(byPhyChan, 31)
        If (byDevCfg.ulChanConfig And SHL(1, i)) Then
           i = i + 1
        End If
        PhyChanToLogChan = PhyChanToLogChan + 1
    Next i
    
    If (byPhyChan >= 32) Then
    
        For i = 32 To byPhyChan
                If (byDevCfg.ulChanConfigEx(0) And SHL(1, (i - 32))) Then
                i = i + 1
            End If
            PhyChanToLogChan = PhyChanToLogChan + 1
        Next
    End If
    PhyChanToLogChan = PhyChanToLogChan - 1

End Function

⌨️ 快捷键说明

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