📄 classdpaedata.cls
字号:
Open DPAEFileName For Binary As #DATAFileNo
Seek DATAFileNo, RecordPointer(RecordNo)
Get #DATAFileNo, , DATABlock
Close #DATAFileNo
RecordNo = DATABlock.EventNo
RecorduS = DATABlock.uSTimer
End Property
Public Property Get RecordnS(ByVal RecordNo As Long) As Currency
DATAFileNo = FreeFile
Open DPAEFileName For Binary As #DATAFileNo
Seek DATAFileNo, RecordPointer(RecordNo)
Get #DATAFileNo, , DATABlock
Close #DATAFileNo
'RecordNo = DATABlock.EventNo
RecordnS = DATABlock.nSTimer
End Property
Public Property Get TotalRecordNum() As Long
TotalRecordNum = EventNum
End Property
Public Property Get UnitNo() As Integer
UnitNo = Paras.UnitNo
End Property
'***************************************************************************************
'********* 控制参数对话区 *************控制参数对话区 *******控制参数对话区 ***********
'***************************************************************************************
'>>>>>>>> 触发地址
Public Property Get CurrentTrigAddressNo() As Integer
CurrentTrigAddressNo = CurrentDelayNo
End Property
Public Property Let CurrentTrigAddressNo(ByVal AddrNo As Integer)
CurrentDelayNo = AddrNo
End Property
Public Property Get TrigAddressClassNum() As Integer
TrigAddressClassNum = UBound(DelayTable)
End Property
Public Property Get TrigAddressStr(ByVal AddrNo As Integer) As String
TrigAddressStr = DelayTable(AddrNo).DelayStr
End Property
'>>>>>>>> 采样频率
Public Property Let CurrentADFrequencyNo(ByVal FreNo As Integer)
CurrentADFreNo = FreNo
End Property
Public Property Get CurrentADFrequencyNo() As Integer
CurrentADFrequencyNo = CurrentADFreNo
End Property
Public Property Get FrequencyClassNum() As Integer
FrequencyClassNum = UBound(ADFreTable)
End Property
Public Property Get ADFrequencyStr(ByVal No As Integer) As String
ADFrequencyStr = ADFreTable(No).FreStr
End Property
Public Property Get CurrentADFre() As Single
CurrentADFre = ADFreTable(Paras.ADFre.No).Fre
End Property
'>>>>>>>> 增益与最大输入信号电平
Public Property Get CurrentGainNo() As Integer
CurrentGainNo = Paras.Gain.No
End Property
Public Property Get GainClassNum() As Integer
GainClassNum = UBound(GainTable)
End Property
Public Property Get GainString() As String
GainString = Paras.Gain.GainStr
End Property
Public Property Get MaxSignalLevel() As Single '单位毫伏
MaxSignalLevel = GainTable(Paras.Gain.No).MaxInVol * 1000
End Property
'>>>>>>>>>> 触发电平
Public Property Get TrigLevelStr(ByVal ChannelNo As Integer) As String
Dim MaxLevel As Single
Select Case ChannelNo
Case 1
MaxLevel = GainTable(CurrentCh1GainNo).MaxInVol * 1000
Case 2
MaxLevel = GainTable(CurrentCh2GainNo).MaxInVol * 1000
End Select
TrigLevelStr = Format$((CurrentTrigLevel.LevelPercent * MaxLevel) / 100, "0.0") + "mV"
End Property
Public Property Get TrigLevel(ByVal ChannelNo As Integer) As Single
Dim MaxLevel As Single
Select Case ChannelNo
Case 1
MaxLevel = GainTable(CurrentCh1GainNo).MaxInVol
Case 2
MaxLevel = GainTable(CurrentCh2GainNo).MaxInVol
End Select
TrigLevel = CurrentTrigLevel.LevelPercent * MaxLevel '单位:mV
End Property
Public Property Get TrigLevelPercent()
TrigLevelPercent = CurrentTrigLevel.LevelPercent
End Property
Public Property Get TrigLevelPercentStr()
TrigLevelPercent = CurrentTrigLevel.LevelPercentStr
End Property
Public Property Let SetTrigPercent(ByVal Percent As Single) '触发电压百分数,在正负100%之间
Dim LevelCode As Byte
With CurrentTrigLevel
'If Level > 1000 Then Level = 1000
'If Level < -1000 Then Level = -1000
Percent = Percent * 10 '将倍率精度提高到1/1000,因为分档度数有-120至+120档
If Percent > 1000 Then Percent = 1000
If Percent < -1000 Then Percent = -1000
.LevelPercent = Percent / 10
.LevelPercentStr = Format$(.LevelPercent, "0.0") + "%"
LevelCode = (3 * Percent / 25) + 128
LevelCode = Round(LevelCode) '触发电平百分数
If LevelCode < 8 Then LevelCode = 8
If LevelCode > 248 Then LevelCode = 248
.ParaStr = ByteToBinStr(LevelCode)
End With
End Property
Public Property Get RunMode() As Integer
RunMode = CurrentRunNo
End Property
Public Property Let RunMode(RunNo As Integer)
CurrentRunNo = RunNo
End Property
Public Property Get TrigMode() As Integer
TrigMode = CurrentTrigModeNo
End Property
Public Property Let TrigMode(ByVal ModeNo As Integer)
CurrentTrigModeNo = ModeNo
End Property
Public Property Get Operator() As String
Operator = Trim$(Paras.Operator)
End Property
Public Property Let Operator(OperatorName As String)
Paras.Operator = Trim$(OperatorName)
End Property
Public Property Get Brief() As String
Brief = Trim$(Paras.Brief)
End Property
Public Property Let Brief(ByVal BriefText As String)
Paras.Brief = Trim$(BriefText)
End Property
Public Property Get SampleLength() As Integer
SampleLength = Paras.SampleLen
End Property
Public Property Get DATAFileName() As String
DATAFileName = Trim$(Paras.DATAFileName)
End Property
Public Property Let DATAFileName(ByVal FileName As String)
Paras.DATAFileName = Trim$(FileName)
End Property
'---------------------------------------------------------------------------------------
'-----------控制参数对话区结束 ---------控制参数对话区结束-----控制参数对话区结束------
'---------------------------------------------------------------------------------------
'***********************************************
'********* 初始化数据表 ************************
'***********************************************
Private Sub InitialParaTable()
Dim i As Integer
'************ 分档延迟参数 ***************************************
For i = 0 To 15
DelayTable(i).No = i
DelayTable(i).DelayStr = Format$(i * 256, "0") + "word"
DelayTable(i).Para = 16 + i
DelayTable(i).Addr = i * 256
Next i
'************ 分档采样频率值 ***************************************
ADFreTable(0).No = 0
ADFreTable(0).FreStr = "50MHz"
ADFreTable(0).Para = &HE
ADFreTable(0).Fre = 50
ADFreTable(1).No = 1
ADFreTable(1).FreStr = "40MHz"
ADFreTable(1).Para = &H16
ADFreTable(1).Fre = 40
ADFreTable(2).No = 2
ADFreTable(2).FreStr = "20MHz"
ADFreTable(2).Para = &H18
ADFreTable(2).Fre = 20
ADFreTable(3).No = 3
ADFreTable(3).FreStr = "10MHz"
ADFreTable(3).Para = &H19
ADFreTable(3).Fre = 10
ADFreTable(4).No = 4
ADFreTable(4).FreStr = " 5MHz"
ADFreTable(4).Para = &H1A
ADFreTable(4).Fre = 5
ADFreTable(5).No = 5
ADFreTable(5).FreStr = " 2MHz"
ADFreTable(5).Para = &H1B
ADFreTable(5).Fre = 2
ADFreTable(6).No = 6
ADFreTable(6).FreStr = " 1MHz"
ADFreTable(6).Para = &H1C
ADFreTable(6).Fre = 1
ADFreTable(7).No = 7
ADFreTable(7).FreStr = "0.5MHz"
ADFreTable(7).Para = &H1D
ADFreTable(7).Fre = 0.5
'************ 分档增益值 ***************************************
GainTable(0).No = 0
GainTable(0).GainStr = "1倍 ±1V"
GainTable(0).ParaStr = "00000000"
GainTable(0).MaxInVol = 1
GainTable(1).No = 1
GainTable(1).GainStr = "2倍 ±0.5V"
GainTable(1).ParaStr = "00001111"
GainTable(1).MaxInVol = 0.5
GainTable(2).No = 2
GainTable(2).GainStr = "5倍 ±0.2V"
GainTable(2).ParaStr = "00100011"
GainTable(2).MaxInVol = 0.2
GainTable(3).No = 3
GainTable(3).GainStr = "10倍 ±0.1V"
GainTable(3).ParaStr = "00110010"
GainTable(3).MaxInVol = 0.1
GainTable(4).No = 4
GainTable(4).GainStr = "20倍 ±0.05V"
GainTable(4).ParaStr = "01000001"
GainTable(4).MaxInVol = 0.05
'************* 采样板联合工作模式 ****************************
RunModeTable(0).No = 0 '"0" 表示各个采样板独立触发工作
RunModeTable(0).ModeStr = "各采样板独立触发工作"
RunModeTable(0).ParaStr = "0"
RunModeTable(0).ModeCode = 0
RunModeTable(1).No = 1 '"1" 各采样板联合同步触发
RunModeTable(1).ModeStr = "各采样板联合同步触发"
RunModeTable(1).ParaStr = "1"
RunModeTable(1).ModeCode = 1
'************** 通道触发模式 ******************************
TrigModeTable(0).No = 0
TrigModeTable(0).ModeStr = "强迫启动触发"
TrigModeTable(0).ParaStr = "0000"
TrigModeTable(0).ModeCode = 0
TrigModeTable(1).No = 1
TrigModeTable(1).ModeStr = "第一通道正电平"
TrigModeTable(1).ParaStr = "0001"
TrigModeTable(1).ModeCode = 1
TrigModeTable(2).No = 2
TrigModeTable(2).ModeStr = "第一通道负电平"
TrigModeTable(2).ParaStr = "0010"
TrigModeTable(2).ModeCode = 2
TrigModeTable(3).No = 3
TrigModeTable(3).ModeStr = "第二通道正电平"
TrigModeTable(3).ParaStr = "0101"
TrigModeTable(3).ModeCode = 5
TrigModeTable(4).No = 4
TrigModeTable(4).ModeStr = "第二通道负电平"
TrigModeTable(4).ParaStr = "0110"
TrigModeTable(4).ModeCode = 6
TrigModeTable(5).No = 5
TrigModeTable(5).ModeStr = "外触发正电平"
TrigModeTable(5).ParaStr = "1101"
TrigModeTable(5).ModeCode = 13
TrigModeTable(6).No = 6
TrigModeTable(6).ModeStr = "外触发负电平"
TrigModeTable(6).ParaStr = "1110"
TrigModeTable(6).ModeCode = 14
'********** 系统缺省取值 *******************
CurrentRunNo = 0
CurrentTrigModeNo = 1
CurrentCh1GainNo = 0
CurrentCh2GainNo = 0
CurrentADFreNo = 1
CurrentDelayNo = 0
CurrentSampleLen = 4096
SetTrigPercent = 0
Paras.Operator = "DPAE 操作员"
Paras.Brief = "分布式并行声发射数据采集系统缺省参数设置"
Paras.DATAFileName = DefaultDATAFileName
End Sub
Private Sub Class_Initialize()
InitialParaTable
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -