testbas.bas
来自「PCI1713板卡驱动,VB编写,8个通道,每个通道500次采样,对采样数据处理」· BAS 代码 · 共 109 行
BAS
109 行
Attribute VB_Name = "TestBas"
Type ObjProperty
strName As String
iType As Long
iMode As Long
iValue As Variant
strNote As String
End Type
Type EnumProperty
strName() As String
iValue() As Long
End Type
Public ObjPro() As ObjProperty
Public EnumPro() As EnumProperty
Sub GetDevObjProperty(DatObj As Object, DDevObj As Object)
Dim SvrDevQuery As Object, i As Long
Set SvrDevQuery = DatObj.SvrDevQuery
For i = 1 To UBound(ObjPro)
ObjPro(i).iValue = SvrDevQuery.GetProperty(DDevObj, ObjPro(i).strName)
Next i
End Sub
Sub SetDevObjProperty(DatObj As Object, DDevObj As Object)
On Error Resume Next
Dim SvrDevQuery As Object, i As Long
Set SvrDevQuery = DatObj.SvrDevQuery
For i = 1 To UBound(ObjPro)
If ObjPro(i).iMode <> 2 Then
SvrDevQuery.SetProperty DDevObj, ObjPro(i).strName, ObjPro(i).iValue
End If
Next i
End Sub
Sub QueryDevObj(DatObj As Object, DDevObj As Object)
On Error Resume Next
Dim i As Long, j As Long, n As Long
Dim iIndex As Long, iSubIndex As Long, iType As Long, iMode As Long
Dim strName As String, strNote As String, SvrDevQuery As Object, iValue As Long
ReDim ObjPro(0) As ObjProperty
ReDim EnumPro(0) As EnumProperty
Set SvrDevQuery = DatObj.SvrDevQuery
SvrDevQuery.SetDevObject DDevObj
For iIndex = 0 To 100
If (0 <> SvrDevQuery.QueryProperty(iIndex, strName, strNote, iType, iMode)) Then Exit For
If iMode <> 2 Then
i = UBound(ObjPro) + 1
ReDim Preserve ObjPro(i)
ObjPro(i).strName = strName
ObjPro(i).strNote = strNote
ObjPro(i).iType = iType
ObjPro(i).iMode = iMode
End If
Next iIndex
For iIndex = 1 To 100
If (SvrDevQuery.QueryEnumName(-iIndex, strName) <> 0) Then Exit For
i = UBound(EnumPro) + 1
ReDim Preserve EnumPro(i)
ReDim msg(0) As String, vv(0) As Long
For iSubIndex = 0 To 100
If (SvrDevQuery.QueryEnumItem(-iIndex, iSubIndex, strName, iValue) = 0) Then
j = UBound(msg) + 1
ReDim Preserve vv(j)
ReDim Preserve msg(j)
strName = Mid(strName, 2)
n = InStr(strName, "__")
If n > 1 Then
strName = Left$(strName, n - 1) + "." + Mid$(strName, n + 2)
End If
n = InStr(strName, "_")
If n > 1 Then
strName = Left$(strName, n - 1) + "~" + Mid$(strName, n + 1)
End If
n = InStr(strName, "负")
If n > 1 Then
strName = Left$(strName, n - 1) + "_" + Mid$(strName, n + 1)
End If
n = InStr(strName, "到")
If n > 1 Then
strName = Left$(strName, n - 1) + "~" + Mid$(strName, n + 1)
End If
n = InStr(strName, "点")
If n > 1 Then
strName = Left$(strName, n - 1) + "." + Mid$(strName, n + 1)
End If
vv(j) = iValue
msg(j) = strName
Else
Exit For
End If
Next iSubIndex
j = UBound(msg)
ReDim EnumPro(i).iValue(j)
ReDim EnumPro(i).strName(j)
For n = 1 To j
EnumPro(i).iValue(n) = vv(n)
EnumPro(i).strName(n) = msg(n)
Next n
Next iIndex
End Sub
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?