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

📄 mdimain.frm

📁 对于符合国际标准COMTRADE格式的数据进行转换处理
💻 FRM
📖 第 1 页 / 共 2 页
字号:
      End
      Begin VB.Menu mPreviewItemFileBar 
         Caption         =   "&V 打印预览..."
      End
      Begin VB.Menu mPrintItemFileBar 
         Caption         =   "&P 打印..."
      End
      Begin VB.Menu mSepPrintExitFileBar 
         Caption         =   "-"
      End
      Begin VB.Menu mExitItemFileBar 
         Caption         =   "&X 退出"
      End
   End
   Begin VB.Menu mViewBar 
      Caption         =   "&V 数据处理"
      Begin VB.Menu mAndataItemViewBar 
         Caption         =   "&A 输出模拟量数据"
      End
      Begin VB.Menu mAnwaveItemViewBar 
         Caption         =   "&W 模拟量波形"
      End
      Begin VB.Menu mSepAnDiViewBar 
         Caption         =   "-"
      End
      Begin VB.Menu mDidataItemViewBar 
         Caption         =   "&D 输出开关量数据"
      End
      Begin VB.Menu mDisequItemViewBar 
         Caption         =   "&S 开关量波形"
      End
   End
   Begin VB.Menu mWindowBar 
      Caption         =   "&W 窗口"
      Begin VB.Menu mTileHorzItemWindowBar 
         Caption         =   "&H 横向平铺"
      End
      Begin VB.Menu mTileVerticalItemWindowBar 
         Caption         =   "&V 纵向平铺"
      End
      Begin VB.Menu mCascadeItemWindowBar 
         Caption         =   "&A 层叠"
      End
      Begin VB.Menu mIconItemWindowBar 
         Caption         =   "&I 排列图标"
      End
   End
   Begin VB.Menu mHelpBar 
      Caption         =   "&A 帮助"
      Begin VB.Menu mHelpItemHelpBar 
         Caption         =   "&H 使用说明"
      End
      Begin VB.Menu mSepHelpComHelpBar 
         Caption         =   "-"
      End
      Begin VB.Menu mToolItemHelpBar 
         Caption         =   "&D 关于COMTRADE数据处理工具"
      End
      Begin VB.Menu mSepComWebHelpBar 
         Caption         =   "-"
      End
      Begin VB.Menu mAccessWebItemHelpBar 
         Caption         =   "&W 访问公司主页"
      End
      Begin VB.Menu mTechSupportItemHelpBar 
         Caption         =   "&T 需要技术支持"
      End
      Begin VB.Menu mWebMeHelpBar 
         Caption         =   "-"
      End
      Begin VB.Menu mApexItemHelpBar 
         Caption         =   "&M 关于成都艾派科斯科技有限公司"
      End
   End
End
Attribute VB_Name = "mdiMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

Const cnEquipNameStatusBar = 1   ' 状态栏:记录装置名称
Const cnEquipIdStatusBar = 2     ' 状态栏:记录装置ID
Const cnAnDIChnsStatusBar = 3    ' 状态栏:模拟量/开关量通道数
Const cnTotalPointsStatusBar = 4 ' 状态栏:采样总点数
Const cnTotalTimeStatusBar = 5   ' 状态栏:采样总时间
Const cnFreqSegStatusBar = 6     ' 状态栏:不同采样频率的数据段数
Const cnAcqTimeStatusBar = 7     ' 状态栏:采样时刻
Const cnFileTypeStatusBar = 8    ' 状态栏:文件格式
Const cnFileSizeStatusBar = 9    ' 状态栏:文件尺寸

' 刷新状态栏显示
Sub subRefreshStatusBar()
    rComtradeFileHeadInfor.sCfgFileName = Trim(rComtradeFileHeadInfor.sCfgFileName)

    If rComtradeFileHeadInfor.sCfgFileName = "" Then ' 当前配置文件名称
        ' 未选择文件
        mdiMain.Caption = csProgramTitle
        
        StatusBar1.Panels(cnEquipNameStatusBar) = "空闲..." ' 状态栏:记录装置名称
        StatusBar1.Panels(cnEquipIdStatusBar) = "" ' 状态栏:记录装置ID
        StatusBar1.Panels(cnAnDIChnsStatusBar) = "" ' 状态栏:模拟量/开关量通道数
        StatusBar1.Panels(cnTotalPointsStatusBar) = "" ' 状态栏:采样总点数
        StatusBar1.Panels(cnTotalTimeStatusBar) = "" ' 状态栏:采样总时间
        StatusBar1.Panels(cnFreqSegStatusBar) = "" ' 状态栏:不同采样频率的数据段数
        StatusBar1.Panels(cnAcqTimeStatusBar) = "" ' 状态栏:采样时刻
        StatusBar1.Panels(cnFileTypeStatusBar) = "" ' 状态栏:文件格式
        StatusBar1.Panels(cnFileSizeStatusBar) = "" ' 状态栏:文件尺寸
    Else
        If rComtradeFileHeadInfor.blFileValid = True Then
            ' 当前配置文件有效
            mdiMain.Caption = csProgramTitle + " - [" + Trim(rComtradeFileHeadInfor.sCfgFileName) + "]" ' 窗口标题
            
            StatusBar1.Panels(cnEquipNameStatusBar) = Trim$(rComtradeFileHeadInfor.sEquipName) ' 状态栏:记录装置名称
            StatusBar1.Panels(cnEquipIdStatusBar) = rComtradeFileHeadInfor.lEquipId ' 状态栏:记录装置ID
            StatusBar1.Panels(cnAnDIChnsStatusBar) = Format(rComtradeFileHeadInfor.lTotalAnalogChs, "0") + "A/" + Format(rComtradeFileHeadInfor.lTotalSwitchChs, "0") + "D" ' 状态栏:模拟量/开关量通道数
            StatusBar1.Panels(cnTotalPointsStatusBar) = rComtradeAcqSegInfor(rComtradeFileHeadInfor.iNumberOfAcqSeg).lEndPointOffset ' 状态栏:采样总点数
            StatusBar1.Panels(cnFreqSegStatusBar) = rComtradeFileHeadInfor.iNumberOfAcqSeg ' 状态栏:不同采样频率的数据段数
            StatusBar1.Panels(cnAcqTimeStatusBar) = Format(rComtradeFileHeadInfor.dAcqZeroTime, "YYYY-MM-DD HH:MM:SS") + "." + Format(rComtradeFileHeadInfor.lAcqZeroUsec, "000000") ' 状态栏:采样时刻
            StatusBar1.Panels(cnFileTypeStatusBar) = Trim$(rComtradeFileHeadInfor.sFileFormat) ' 状态栏:文件格式
            StatusBar1.Panels(cnFileSizeStatusBar) = FileLen(rComtradeFileHeadInfor.sDatFileName) ' 状态栏:文件尺寸
            
            ' 计算采样总时间:Σ(各采样频率段采样点数/采样频率)
            Dim i As Integer, fTotalTime As Single
            fTotalTime = 0# ' 秒
            For i = 1 To rComtradeFileHeadInfor.iNumberOfAcqSeg
                If i = 1 Then
                    fTotalTime = rComtradeAcqSegInfor(i).lEndPointOffset / rComtradeAcqSegInfor(i).fPointsPerSec
                Else
                    fTotalTime = fTotalTime + (rComtradeAcqSegInfor(i).lEndPointOffset - rComtradeAcqSegInfor(i - 1).lEndPointOffset) / rComtradeAcqSegInfor(i).fPointsPerSec
                End If
            Next i
            StatusBar1.Panels(cnTotalTimeStatusBar) = Format(fTotalTime, "0.000000") + "s" ' 状态栏:采样总时间
        Else
            ' 当前配置文件无效
            mdiMain.Caption = csProgramTitle + " - [" + Trim(rComtradeFileHeadInfor.sCfgFileName) + "]" ' 窗口标题
            
            StatusBar1.Panels(cnEquipNameStatusBar) = "" ' 状态栏:记录装置名称
            StatusBar1.Panels(cnEquipIdStatusBar) = "" ' 状态栏:记录装置ID
            StatusBar1.Panels(cnAnDIChnsStatusBar) = "" ' 状态栏:模拟量/开关量通道数
            StatusBar1.Panels(cnTotalPointsStatusBar) = "" ' 状态栏:采样总点数
            StatusBar1.Panels(cnTotalTimeStatusBar) = "" ' 状态栏:采样总时间
            StatusBar1.Panels(cnFreqSegStatusBar) = "" ' 状态栏:不同采样频率的数据段数
            StatusBar1.Panels(cnAcqTimeStatusBar) = "" ' 状态栏:采样时刻
            StatusBar1.Panels(cnFileTypeStatusBar) = "" ' 状态栏:文件格式
            StatusBar1.Panels(cnFileSizeStatusBar) = "" ' 状态栏:文件尺寸
        End If
    End If
End Sub

Private Sub mAccessWebItemHelpBar_Click()
  'Opens users default web browser and navigates to the selected URL
  Dim strURL As String
  strURL = "http://www.apextech.com.cn"
  Call ShellExecute(Me.hwnd, "Open", strURL, "", "", SW_SHOWMAXIMIZED)
End Sub

Private Sub mAndataItemViewBar_Click()
    If rComtradeFileHeadInfor.lTotalAnalogChs < 1 Then
        MsgBox "对不起,数据文件中没有模拟量信息", vbInformation + vbOKOnly, "操作失误"
        Exit Sub
    End If
    
    If rComtradeFileHeadInfor.blFileValid = False Then
        MsgBox "请先打开有效的数据文件", vbCritical + vbOKOnly, "操作失误"
        Exit Sub ' 当前数据文件是否有效
    End If
    
    frmOutputAnalog.Show vbNormal
End Sub

Private Sub mAnwaveItemViewBar_Click()
    If rComtradeFileHeadInfor.lTotalAnalogChs < 1 Then
        MsgBox "对不起,数据文件中没有模拟量信息", vbInformation + vbOKOnly, "操作失误"
        Exit Sub
    End If
    
    If rComtradeFileHeadInfor.blFileValid = False Then
        MsgBox "请先打开有效的数据文件", vbCritical + vbOKOnly, "操作失误"
        Exit Sub ' 当前数据文件是否有效
    End If
End Sub

Private Sub mApexItemHelpBar_Click()
    If Dir(App.Path + "\gongsijieshao.htm") = "" Then
        frmAboutApexTechDialog.Show vbNormal
    Else
        frmAboutApexTech.Show vbNormal ' 加载网页方式
    End If
End Sub

Private Sub mCascadeItemWindowBar_Click()
    Me.Arrange vbCascade
End Sub

' 关闭可能的子窗口
Sub CloseAllChildWindows()
    Unload frmOutputAnalog ' ANDATA
    Unload frmOutputSwitch ' DIDATA
End Sub

Private Sub mCloseItemFileBar_Click()
    CloseAllChildWindows ' 关闭可能的子窗口
    
    rComtradeFileHeadInfor.sCfgFileName = ""
    rComtradeFileHeadInfor.sDatFileName = ""
    rComtradeFileHeadInfor.blFileValid = False ' 当前数据文件是否有效
    subRefreshStatusBar ' 刷新状态栏显示
End Sub

Private Sub mDidataItemViewBar_Click()
    If rComtradeFileHeadInfor.lTotalSwitchChs < 1 Then
        MsgBox "对不起,数据文件中没有开关量信息", vbInformation + vbOKOnly, "操作失误"
        Exit Sub
    End If
    
    If rComtradeFileHeadInfor.blFileValid = False Then
        MsgBox "请先打开有效的数据文件", vbCritical + vbOKOnly, "操作失误"
        Exit Sub ' 当前数据文件是否有效
    End If
    
    frmOutputSwitch.Show vbNormal
End Sub

Private Sub MDIForm_Load()
    Me.WindowState = vbMaximized ' 窗口最大化
    
    ' 初始化对话框
    CommonDialog1.Filter = "COMTRADE配置文件(*.CFG)|*.CFG|所有文件格式(*.*)|*.*"

    subRefreshStatusBar ' 刷新状态栏显示
End Sub

Private Sub MDIForm_Unload(Cancel As Integer)
    If MsgBox("确认退出程序吗", vbYesNo + vbQuestion, "退出程序") = vbYes Then
        End
    End If
    
    Cancel = 1
End Sub

Private Sub mDisequItemViewBar_Click()
    If rComtradeFileHeadInfor.lTotalSwitchChs < 1 Then
        MsgBox "对不起,数据文件中没有开关量信息", vbInformation + vbOKOnly, "操作失误"
        Exit Sub
    End If
    
    If rComtradeFileHeadInfor.blFileValid = False Then
        MsgBox "请先打开有效的数据文件", vbCritical + vbOKOnly, "操作失误"
        Exit Sub ' 当前数据文件是否有效
    End If
End Sub

Private Sub mExitItemFileBar_Click()
    If MsgBox("确认退出程序吗", vbYesNo + vbQuestion, "退出程序") = vbYes Then
        End
    End If
End Sub

Private Sub mIconItemWindowBar_Click()
    Me.Arrange vbArrangeIcons
End Sub

Private Sub mOpenItemFileBar_Click()
    CommonDialog1.DialogTitle = "请选择COMTRADE格式的数据文件"
    CommonDialog1.ShowOpen
    
    Dim sCfgFileName As String, sOldCfgFileName As String
    sCfgFileName = UCase$(Trim$(CommonDialog1.filename))  ' 当前数据文件名称
    
    If sCfgFileName = "" Then Exit Sub ' 未选择文件
    
    '保存原来的数据文件,以避免重复调用同一个文件,这样可以提高处理效率
    sOldCfgFileName = rComtradeFileHeadInfor.sCfgFileName
    
    ' 取得重新选择的文件名称
    rComtradeFileHeadInfor.sCfgFileName = sCfgFileName
        
    ' 配置文件的扩展名是否正确: 必须为CFG
    If UCase$(Trim$(sGetExtOrNameOfFile(rComtradeFileHeadInfor.sCfgFileName, True))) <> "CFG" Then
        rComtradeFileHeadInfor.blFileValid = False ' 当前数据文件是否有效
        MsgBox "文件" + rComtradeFileHeadInfor.sCfgFileName + "扩展名错误! 文件名必须符合*.CFG格式。", vbOKOnly + vbCritical, "文件选择错误"
        Exit Sub
    End If
    
    If Dir(rComtradeFileHeadInfor.sCfgFileName) = "" Then
        rComtradeFileHeadInfor.blFileValid = False ' 当前数据文件是否有效
        MsgBox "文件" + rComtradeFileHeadInfor.sCfgFileName + "不存在!", vbOKOnly + vbCritical, "文件选择错误"
        Exit Sub
    End If

    ' 得到数据文件名称
    rComtradeFileHeadInfor.sDatFileName = sGetExtOrNameOfFile(rComtradeFileHeadInfor.sCfgFileName, False) + ".DAT" ' 当前数据文件名称
    If Dir(rComtradeFileHeadInfor.sDatFileName) = "" Then
        rComtradeFileHeadInfor.blFileValid = False ' 当前数据文件是否有效
        MsgBox "文件" + rComtradeFileHeadInfor.sDatFileName + "不存在! 配置文件Name.CFG和数据文件Name.DAT必须配套。", vbOKOnly + vbCritical, "文件选择错误"
        Exit Sub
    End If
        
    ' 是否选择了相同的文件
'    If UCase$(Trim$(sOldCfgFileName)) <> UCase$(Trim$(rComtradeFileHeadInfor.sCfgFileName)) Then
        CloseAllChildWindows ' 关闭可能的子窗口
        
        rComtradeFileHeadInfor.blFileValid = True ' 当前数据文件是否有效
        
        Dim iMousePointer As Integer
        iMousePointer = mdiMain.MousePointer ' 保存鼠标形状
        mdiMain.MousePointer = vbHourglass ' 11 Hourglass (wait).
        
        subGetFileInfor ' 得到数据文件信息
        
        mdiMain.MousePointer = iMousePointer ' 恢复鼠标形状
'    End If

    subRefreshStatusBar ' 刷新状态栏显示
End Sub

Private Sub mPrinterItemFileBar_Click()
    CommonDialog1.ShowPrinter
End Sub

Private Sub mTechSupportItemHelpBar_Click()
  'Opens users default web browser and navigates to the selected URL
  Dim strEmail As String
  strEmail = "mailto:apextech@apextech.com.cn"
  Call ShellExecute(Me.hwnd, "Open", strEmail, "", "", SW_SHOWMAXIMIZED)
End Sub

Private Sub mTileHorzItemWindowBar_Click()
    Me.Arrange vbTileHorizontal
End Sub

Private Sub mTileVerticalItemWindowBar_Click()
    Me.Arrange vbTileVertical
End Sub

Private Sub mToolItemHelpBar_Click()
    frmAboutComtradeTool.Show vbNormal
End Sub

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
    Select Case UCase$(Trim(Button.Key))
        Case "OPEN"
            mOpenItemFileBar_Click
        Case "ANDATA"
            mAndataItemViewBar_Click
        Case "ANWAVE"
            mAnwaveItemViewBar_Click
        Case "DIDATA"
            mDidataItemViewBar_Click
        Case "DIWAVE"
            mDisequItemViewBar_Click
        Case "PREVIEW"
        Case "PRINT"
    End Select
End Sub

⌨️ 快捷键说明

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