⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mdataoperate.bas

📁 地面测试仪
💻 BAS
📖 第 1 页 / 共 2 页
字号:
'* 函数描述:保存数据
'* 参数列表:SData地面仪数据, strFile文件名
'* 返    回:
'* 作    者:
'* 创建日期: 2007-10-08
'**********************************************************************
Dim filenum As Integer, i As Integer

filenum = FreeFile
   
Open strFile For Output As #filenum
'写文件头
Print #filenum, Space(20) & "地面测试仪数据记录" & IIf(SData.HaveDym, "", "(无高低频)")
Print #filenum, Space(15) & "=========================="
Print #filenum, Space(15) & "井    号:" & SData.dmyHead(1)
Print #filenum, Space(15) & "日    期:" & SData.dmyHead(2)
Print #filenum, Space(15) & "时    间:" & SData.dmyHead(3)
Print #filenum, Space(15) & "关井时间:" & SData.dmyHead(4)
Print #filenum, Space(15) & "液 面 深:" & Format(SData.dmyHead(5), "0.0")
Print #filenum, Space(15) & "套    压:" & SData.dmyHead(6)
Print #filenum, Space(15) & "声    速:" & SData.dmyHead(7)
Print #filenum, Space(15) & "数据点数:" & SData.dmyHead(8)
Print #filenum, Space(15) & "回归间隔:" & SData.dmyHead(9)
Print #filenum, Space(15) & "回归点数:" & SData.dmyHead(10)
Print #filenum, Space(15) & "文 件 名:" & strFile
Print #filenum, " "

'写液面套压数据
Print #filenum, Space(10) & "液面套压数据"
Print #filenum, " "
Print #filenum, "序号" & Space(6) & "累计时间(s)" & Space(6) _
              & "套压" & Space(6) & "液面数据"
Print #filenum, " "
  
For i = 1 To CInt(SData.dmyHead(10))
    Print #filenum, strFormat(CStr(i), Chr(32), 9, False) & _
                    strFormat(SData.dmyYT(i, 1), Chr(32), 10) & _
                    strFormat(Format(SData.dmyYT(i, 3), "0.000"), Chr(32), 10) & _
                    strFormat(Format(SData.dmyYT(i, 2), "0.00"), Chr(32), 10)
Next

'写液面高低频数据
If SData.HaveDym Then
    Print #filenum, Space(10) & "液面高低频数据"
    Print #filenum, " "
    Print #filenum, Space(5) & "序号" & Space(10) & "高频数据" & Space(10) & "低频数据"
    Print #filenum, " "
    For i = 1 To CInt(SData.dmyHead(8))
        Print #filenum, Space(5) & strFormat(CStr(i), Chr(32), 9, False) & _
                        strFormat(SData.dmyHL(i, 1), Chr(32), 10) & _
                        strFormat(SData.dmyHL(i, 2), Chr(32), 10)
    Next
End If
Close #filenum

End Function

'打开数据
Function openFile(strFile As String) As dmyData
On Error GoTo errlab
'**********************************************************************
'* 函数名称:openFile
'* 函数描述:从文件读取数据
'* 参数列表:strFile文件名
'* 返    回:地面仪数据
'* 作    者:
'* 创建日期: 2007-10-08
'**********************************************************************
Dim filenum As Integer, i As Integer
Dim strTemp As String, strTitle As String
Dim tempData As dmyData
Dim dataCount As Long   '数据长度
Dim rCount As Long      '回归数据长度
filenum = FreeFile()
Open strFile For Input As filenum
    Line Input #filenum, strTemp
    strTitle = Trim(strTemp)
    Line Input #filenum, strTemp
    '3-13表头
    For i = 1 To 11
        Line Input #filenum, strTemp
        tempData.dmyHead(i) = GetStr(Trim(strTemp), ":")
    Next
    dataCount = CLng(tempData.dmyHead(8))
    rCount = CLng(tempData.dmyHead(10))
'    Line Input #fileNum, Trim()
    
    '4行表头
    For i = 1 To 5
         Line Input #filenum, strTemp
    Next
    '液面套压数据
    ReDim tempData.dmyYT(rCount, 5) '1时间2液面3套压4x轴坐标5静压
    
    For i = 1 To rCount
        Line Input #filenum, strTemp
        
'        tempData.dmyYT(i, 1) = i
        tempData.dmyYT(i, 2) = CSng(Trim(Mid(strTemp, 32))) '液面
        tempData.dmyYT(i, 3) = CSng(Trim(Mid(strTemp, 21, 11))) '套压
        tempData.dmyYT(i, 1) = CSng(Trim(Mid(strTemp, 11, 11))) '时间
        
        If tempData.YNoodlesMax < tempData.dmyYT(i, 2) Then tempData.YNoodlesMax = tempData.dmyYT(i, 2)
        If tempData.TPressMax < tempData.dmyYT(i, 3) Then tempData.TPressMax = tempData.dmyYT(i, 3)
    Next
    tempData.YNoodlesMax = IIf(tempData.YNoodlesMax > 0, tempData.YNoodlesMax * 1.1, 1.5)
    
    tempData.TPressMax = IIf(tempData.TPressMax > 0, (tempData.TPressMax \ 2 + 1) * 2, 2)
    
    tempData.TimeMax = IIf(tempData.dmyYT(rCount, 1) > 0, tempData.dmyYT(rCount, 1), IIf(tempData.dmyHead(9) > 0, tempData.dmyHead(9), 15))
    
    
    If Trim(strTitle) <> strDataYTTitle Then
        
        tempData.HaveDym = True
        Line Input #filenum, strTemp
   
    '4行表头
        For i = 1 To 3
             Line Input #filenum, strTemp
        Next
        '液面高低频数据
        ReDim tempData.dmyHL(dataCount, 3)
        For i = 1 To dataCount
            Line Input #filenum, strTemp
            
    '        tempData.dmyHL(i, 1) = i
            tempData.dmyHL(i, 1) = CSng(Trim(Mid(strTemp, 10, 15))) '高频
            tempData.dmyHL(i, 2) = CSng(Trim(Mid(strTemp, 25)))     '低频
            
            If tempData.HFrequencyMax < tempData.dmyHL(i, 1) Then tempData.HFrequencyMax = tempData.dmyHL(i, 1)
            If tempData.LFrequencyMax < tempData.dmyHL(i, 2) Then tempData.LFrequencyMax = tempData.dmyHL(i, 2)
        Next
        
        tempData.HLRowPiont = CLng(dataCount / HLRowCount / 10) * 10
        
    End If
Close filenum

getOp tempData.hanshui, tempData.zhongshen, strFile

If havaRep(strFile) Then
   
    ReadRep strFile, tempData.dmyRep
Else
    tempData.dmyRep(3) = tempData.dmyHead(1)
    tempData.dmyRep(7) = ""
    tempData.dmyRep(8) = ""
    tempData.dmyRep(9) = tempData.dmyHead(3)
    tempData.dmyRep(11) = tempData.dmyHead(4)
    tempData.dmyRep(19) = tempData.dmyHead(6)
End If
'结束
tempData.fileName = strFile
tempData.ReadSuc = True
openFile = tempData
Exit Function

errlab:
    '文件格式不对
Close filenum
tempData.ReadSuc = False
openFile = tempData
End Function

'合并数据
Function MergeData(FirstFile As String, SecondFile As String, dFile As String)
'**********************************************************************
'* 函数名称:MergeData
'* 函数描述:合并数据
'* 参数列表:FirstFile第一个文件,SecondFile第二个文件,dFile目标文件
'* 返    回:
'* 作    者:
'* 创建日期: 2007-10-08
'**********************************************************************

'文件头用第一个文件的头,点数需要加

On Error GoTo errlab
Dim t1 As dmyData
Dim t2 As dmyData
Dim t3() As String
Dim rowCount As Integer, i  As Integer, j As Integer, k As Integer
Dim jg As Long, temptime As Long
t1 = openFile(FirstFile)
t2 = openFile(SecondFile)
jg = t1.dmyHead(9)
If t1.ReadSuc And t2.ReadSuc Then

    j = CInt(t1.dmyHead(10))
    k = CInt(t2.dmyHead(10))
    rowCount = j + k
    t3 = t1.dmyYT
    ReDim t1.dmyYT(rowCount, 5)
    
    For i = 1 To j
        t1.dmyYT(i, 1) = t2.dmyYT(i, 1)
        t1.dmyYT(i, 2) = t2.dmyYT(i, 2)
        t1.dmyYT(i, 3) = t2.dmyYT(i, 3)
    Next
    temptime = t1.dmyYT(j, 1)
    
    For i = 1 To k
        t1.dmyYT(i + j, 1) = CStr(temptime + jg * i)
        t1.dmyYT(i + j, 2) = t2.dmyYT(i, 2)
        t1.dmyYT(i + j, 3) = t2.dmyYT(i, 3)
'        t1.dmyYT(i + j, 4) = t2.dmyYT(i, 4)
'        t1.dmyYT(i + j, 5) = t2.dmyYT(i, 5)
    Next
    Erase t1.dmyHL
    
    t1.dmyHead(10) = rowCount
    
    saveFile t1, dFile
    MsgBox "文件合并完成"
Else
    MsgBox "失败:检查文件格式"
End If
Exit Function
errlab:
    MsgBox "失败:检查文件格式"
    

End Function

Function JianDing()
'**********************************************************************
'* 函数名称:JianDing
'* 函数描述:打开检定报表(打开Excel)
'* 参数列表:
'* 返    回:
'* 作    者:
'* 创建日期: 2007-10-08
'**********************************************************************
'Dim xlApp As Excel.Application
'Dim xlBook As Excel.Workbook
'Dim xlsheet As Excel.Worksheet '定义工作表类
'
'If Dir(App.Path & "\jdbb.~") = "" Then
'    Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象
'    xlApp.Visible = True '设置EXCEL对象可见(或不可见)
'    Set xlBook = xlApp.Workbooks.Open(App.Path & "\jdbb.xls")  '打开已经存在的EXCEL工件簿文件
'    DoEvents
'    Set xlsheet = xlBook.Worksheets(1) '打开EXCEL工作表
'    xlsheet.Activate '激活工作表
'Else
'
'    MsgBox "检定报表已经打开!!!"
'End If
'
'Set xlApp = Nothing
'Set xlBook = Nothing
'Set xlsheet = Nothing

FrmJianDing.Show 1

End Function

'获得静压
Function GetJpress(zDeep As Integer, hWater As Integer)
'**********************************************************************
'* 函数名称:GetJpress
'* 函数描述:获得静压
'* 参数列表:zDeep 油层中深, hWater含水
'* 返    回:
'* 作    者:
'* 创建日期: 2007-10-08
'**********************************************************************
 '液面及套压计算静压的公式P=P'+(H"-H')*[H"'*R'+(1-H"')*R"]
 'P为静压,p'为套压,H"为油层中深,H'液面深度,H"'为含水,R'为水密度,R"为油密度
Dim i As Integer
Dim sngTemp As Single

With TempDmyData
    .JPressMax = 0
    For i = 1 To UBound(TempDmyData.dmyYT())
        sngTemp = .dmyYT(i, 3) + (zDeep - .dmyYT(i, 2)) * (hWater / 100 * 1 + (1 - hWater / 100) * 0.82) * 0.00980665
        
        If .JPressMax < sngTemp Then .JPressMax = sngTemp
         .dmyYT(i, 5) = Format(IIf(sngTemp < 0, 0, sngTemp), "#.00")
    Next
    .JPressMax = Int(.JPressMax) + 1
End With
End Function


'获得时间数组
Function getTimeArr(Interval As Integer, arrCount As Integer, isXianxing As Boolean) As Long()
'**********************************************************************
'* 函数名称:getTimeArr
'* 函数描述:获得时间数组
'* 参数列表:Interval时间间隔, arrCount 数组长度, isXianxing 是否线性
'* 返    回:
'* 作    者:
'* 创建日期: 2007-10-08
'**********************************************************************
Dim timerArr() As Long
ReDim timerArr(arrCount)
Dim i As Integer, j As Integer, k As Long 'k为累计时间
'T  2T  4T  8T  16T 32T
'8  8   8   8   16  结尾
'0  1   2   3   4-5 6-end

timerArr(1) = 0
For i = 2 To arrCount
    If Not isXianxing Then '时间非线性
        j = ((i - 1) \ 8) '0到8
        Select Case True
        Case j <= 3 'j=1 到3
            k = Interval * 2 ^ j '累计时间=时间间隔×2的j次方(1次,2次,3次)
        Case j > 3 And j <= 5 'i=5到6
            k = Interval * 2 ^ 4 '累计时间=时间间隔×16
        Case Else
            k = Interval * 2 ^ 5 '剩下,累计时间=时间间隔×32
        End Select
        timerArr(i) = timerArr(i - 1) + k '上一次时间+累计时间
    Else '时间线性增加
        timerArr(i) = Interval * (i - 1)
    End If
'    Debug.Print timerArr(i)
Next
getTimeArr = timerArr
End Function


Public Sub FSaveFile(SData As dmyData)
'**********************************************************************
'* 函数名称:FSaveFile
'* 函数描述:保存文件
'* 参数列表:SData 地面仪数据
'* 返    回:
'* 作    者:
'* 创建日期: 2007-10-08
'**********************************************************************
    Dim fileName As String
    mDialog.DialogTitle = "保存数据文件"
    mDialog.Filter = "文件 (*.dmy)|*.dmy"
    mDialog.Flags = cdlOFNFileMustExist
    mDialog.fileName = SData.dmyHead(1)
    mDialog.DefaultExt = "dmy"
    mDialog.InitDir = App.Path 'getdefaultpath_load
    mDialog.ShowSave
    fileName = Trim(mDialog.fileName)
    If fileName <> "" Then
        saveFile SData, fileName
    End If
    
End Sub

⌨️ 快捷键说明

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