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 + -
显示快捷键?