?? 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 + -