www.pudn.com > gdqj1a302.zip > main.frm


VERSION 5.00 
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX" 
Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "comdlg32.ocx" 
Object = "{6B7E6392-850A-101B-AFC0-4210102A8DA7}#1.3#0"; "comctl32.ocx" 
Begin VB.Form fmMain  
   AutoRedraw      =   -1  'True 
   BackColor       =   &H00C0C0C0& 
   Caption         =   "Gdqj 3.2" 
   ClientHeight    =   8280 
   ClientLeft      =   60 
   ClientTop       =   630 
   ClientWidth     =   11880 
   BeginProperty Font  
      Name            =   "Times New Roman" 
      Size            =   9.75 
      Charset         =   0 
      Weight          =   400 
      Underline       =   0   'False 
      Italic          =   0   'False 
      Strikethrough   =   0   'False 
   EndProperty 
   Icon            =   "main.frx":0000 
   LinkTopic       =   "Form1" 
   Picture         =   "main.frx":0442 
   ScaleHeight     =   8280 
   ScaleWidth      =   11880 
   Begin ComctlLib.Toolbar toolbar1  
      Align           =   1  'Align Top 
      Height          =   420 
      Left            =   0 
      TabIndex        =   8 
      Top             =   0 
      Width           =   11880 
      _ExtentX        =   20955 
      _ExtentY        =   741 
      ButtonWidth     =   635 
      ButtonHeight    =   582 
      Appearance      =   1 
      ImageList       =   "ImageList1" 
      _Version        =   327682 
      BeginProperty Buttons {0713E452-850A-101B-AFC0-4210102A8DA7}  
         NumButtons      =   11 
         BeginProperty Button1 {0713F354-850A-101B-AFC0-4210102A8DA7}  
            Key             =   "" 
            Object.ToolTipText     =   "X+" 
            Object.Tag             =   "" 
            ImageIndex      =   1 
         EndProperty 
         BeginProperty Button2 {0713F354-850A-101B-AFC0-4210102A8DA7}  
            Key             =   "" 
            Object.ToolTipText     =   "X-" 
            Object.Tag             =   "" 
            ImageIndex      =   2 
         EndProperty 
         BeginProperty Button3 {0713F354-850A-101B-AFC0-4210102A8DA7}  
            Key             =   "" 
            Object.ToolTipText     =   "Y+" 
            Object.Tag             =   "" 
            ImageIndex      =   3 
         EndProperty 
         BeginProperty Button4 {0713F354-850A-101B-AFC0-4210102A8DA7}  
            Key             =   "" 
            Object.ToolTipText     =   "Y-" 
            Object.Tag             =   "" 
            ImageIndex      =   4 
         EndProperty 
         BeginProperty Button5 {0713F354-850A-101B-AFC0-4210102A8DA7}  
            Key             =   "" 
            Object.ToolTipText     =   "全程显示" 
            Object.Tag             =   "" 
            ImageIndex      =   5 
         EndProperty 
         BeginProperty Button6 {0713F354-850A-101B-AFC0-4210102A8DA7}  
            Key             =   "" 
            Object.ToolTipText     =   "初始形式" 
            Object.Tag             =   "" 
            ImageIndex      =   6 
         EndProperty 
         BeginProperty Button7 {0713F354-850A-101B-AFC0-4210102A8DA7}  
            Key             =   "" 
            Object.ToolTipText     =   "偏移切换" 
            Object.Tag             =   "" 
            ImageIndex      =   7 
         EndProperty 
         BeginProperty Button8 {0713F354-850A-101B-AFC0-4210102A8DA7}  
            Key             =   "" 
            Object.ToolTipText     =   "生成文本文件" 
            Object.Tag             =   "" 
            ImageIndex      =   8 
         EndProperty 
         BeginProperty Button9 {0713F354-850A-101B-AFC0-4210102A8DA7}  
            Key             =   "" 
            Object.ToolTipText     =   "打印" 
            Object.Tag             =   "" 
            ImageIndex      =   9 
         EndProperty 
         BeginProperty Button10 {0713F354-850A-101B-AFC0-4210102A8DA7}  
            Key             =   "" 
            Object.ToolTipText     =   "Y++" 
            Object.Tag             =   "" 
            ImageIndex      =   10 
         EndProperty 
         BeginProperty Button11 {0713F354-850A-101B-AFC0-4210102A8DA7}  
            Key             =   "" 
            Object.ToolTipText     =   "Y--" 
            Object.Tag             =   "" 
            ImageIndex      =   11 
         EndProperty 
      EndProperty 
      Begin ComctlLib.ImageList ImageList1  
         Left            =   2130 
         Top             =   60 
         _ExtentX        =   1005 
         _ExtentY        =   1005 
         BackColor       =   16777215 
         ImageWidth      =   16 
         ImageHeight     =   16 
         MaskColor       =   12632256 
         _Version        =   327682 
         BeginProperty Images {0713E8C2-850A-101B-AFC0-4210102A8DA7}  
            NumListImages   =   11 
            BeginProperty ListImage1 {0713E8C3-850A-101B-AFC0-4210102A8DA7}  
               Picture         =   "main.frx":18EC 
               Key             =   "" 
            EndProperty 
            BeginProperty ListImage2 {0713E8C3-850A-101B-AFC0-4210102A8DA7}  
               Picture         =   "main.frx":1E3E 
               Key             =   "" 
            EndProperty 
            BeginProperty ListImage3 {0713E8C3-850A-101B-AFC0-4210102A8DA7}  
               Picture         =   "main.frx":2390 
               Key             =   "" 
            EndProperty 
            BeginProperty ListImage4 {0713E8C3-850A-101B-AFC0-4210102A8DA7}  
               Picture         =   "main.frx":28E2 
               Key             =   "" 
            EndProperty 
            BeginProperty ListImage5 {0713E8C3-850A-101B-AFC0-4210102A8DA7}  
               Picture         =   "main.frx":2E34 
               Key             =   "" 
            EndProperty 
            BeginProperty ListImage6 {0713E8C3-850A-101B-AFC0-4210102A8DA7}  
               Picture         =   "main.frx":3386 
               Key             =   "" 
            EndProperty 
            BeginProperty ListImage7 {0713E8C3-850A-101B-AFC0-4210102A8DA7}  
               Picture         =   "main.frx":38D8 
               Key             =   "" 
            EndProperty 
            BeginProperty ListImage8 {0713E8C3-850A-101B-AFC0-4210102A8DA7}  
               Picture         =   "main.frx":3E2A 
               Key             =   "" 
            EndProperty 
            BeginProperty ListImage9 {0713E8C3-850A-101B-AFC0-4210102A8DA7}  
               Picture         =   "main.frx":4144 
               Key             =   "" 
            EndProperty 
            BeginProperty ListImage10 {0713E8C3-850A-101B-AFC0-4210102A8DA7}  
               Picture         =   "main.frx":4686 
               Key             =   "" 
            EndProperty 
            BeginProperty ListImage11 {0713E8C3-850A-101B-AFC0-4210102A8DA7}  
               Picture         =   "main.frx":4BD8 
               Key             =   "" 
            EndProperty 
         EndProperty 
      End 
   End 
   Begin VB.HScrollBar HScroll1  
      Height          =   225 
      Left            =   480 
      Max             =   100 
      TabIndex        =   10 
      Top             =   8010 
      Width           =   4725 
   End 
   Begin VB.ListBox List1  
      BackColor       =   &H0080FFFF& 
      BeginProperty Font  
         Name            =   "Courier New" 
         Size            =   10.5 
         Charset         =   0 
         Weight          =   400 
         Underline       =   0   'False 
         Italic          =   0   'False 
         Strikethrough   =   0   'False 
      EndProperty 
      ForeColor       =   &H00FF0000& 
      Height          =   6945 
      ItemData        =   "main.frx":512A 
      Left            =   120 
      List            =   "main.frx":512C 
      TabIndex        =   9 
      Top             =   1020 
      Width           =   11775 
   End 
   Begin VB.Timer Timer1  
      Enabled         =   0   'False 
      Left            =   9240 
      Top             =   7620 
   End 
   Begin MSCommLib.MSComm MSComm1  
      Left            =   10890 
      Top             =   7530 
      _ExtentX        =   1005 
      _ExtentY        =   1005 
      _Version        =   393216 
      DTREnable       =   -1  'True 
      InBufferSize    =   2048 
      InputMode       =   1 
   End 
   Begin VB.PictureBox Picture2  
      BeginProperty Font  
         Name            =   "MS Sans Serif" 
         Size            =   8.25 
         Charset         =   0 
         Weight          =   400 
         Underline       =   0   'False 
         Italic          =   0   'False 
         Strikethrough   =   0   'False 
      EndProperty 
      Height          =   315 
      Left            =   180 
      ScaleHeight     =   255 
      ScaleWidth      =   11715 
      TabIndex        =   1 
      Top             =   7650 
      Width           =   11775 
   End 
   Begin MSComDlg.CommonDialog CommonDialog1  
      Left            =   10140 
      Top             =   7590 
      _ExtentX        =   847 
      _ExtentY        =   847 
      _Version        =   393216 
   End 
   Begin VB.PictureBox Picture1  
      BackColor       =   &H80000004& 
      BeginProperty Font  
         Name            =   "MS Sans Serif" 
         Size            =   8.25 
         Charset         =   0 
         Weight          =   400 
         Underline       =   0   'False 
         Italic          =   0   'False 
         Strikethrough   =   0   'False 
      EndProperty 
      Height          =   6600 
      Left            =   180 
      ScaleHeight     =   6540 
      ScaleWidth      =   11715 
      TabIndex        =   0 
      Top             =   1080 
      Width           =   11775 
   End 
   Begin VB.Label Label9  
      BackColor       =   &H00404040& 
      BorderStyle     =   1  'Fixed Single 
      BeginProperty Font  
         Name            =   "Times New Roman" 
         Size            =   12 
         Charset         =   0 
         Weight          =   700 
         Underline       =   0   'False 
         Italic          =   0   'False 
         Strikethrough   =   0   'False 
      EndProperty 
      ForeColor       =   &H000000FF& 
      Height          =   375 
      Left            =   11130 
      TabIndex        =   13 
      Top             =   540 
      Width           =   825 
   End 
   Begin VB.Label Label8  
      Caption         =   "Label8" 
      Height          =   525 
      Left            =   5580 
      TabIndex        =   12 
      Top             =   3900 
      Width           =   1245 
   End 
   Begin VB.Label Label1  
      Caption         =   "Label1" 
      Height          =   525 
      Left            =   5580 
      TabIndex        =   11 
      Top             =   3900 
      Width           =   1245 
   End 
   Begin VB.Label Label7  
      AutoSize        =   -1  'True 
      BackStyle       =   0  'Transparent 
      Caption         =   "状态" 
      BeginProperty Font  
         Name            =   "Times New Roman" 
         Size            =   9 
         Charset         =   0 
         Weight          =   700 
         Underline       =   0   'False 
         Italic          =   0   'False 
         Strikethrough   =   0   'False 
      EndProperty 
      Height          =   225 
      Left            =   180 
      TabIndex        =   7 
      Top             =   540 
      Width           =   390 
   End 
   Begin VB.Label Label6  
      AutoSize        =   -1  'True 
      BackStyle       =   0  'Transparent 
      Caption         =   "接收" 
      BeginProperty Font  
         Name            =   "Times New Roman" 
         Size            =   9 
         Charset         =   0 
         Weight          =   700 
         Underline       =   0   'False 
         Italic          =   0   'False 
         Strikethrough   =   0   'False 
      EndProperty 
      Height          =   225 
      Left            =   8670 
      TabIndex        =   6 
      Top             =   8040 
      Width           =   390 
   End 
   Begin VB.Label Label5  
      AutoSize        =   -1  'True 
      BackStyle       =   0  'Transparent 
      Caption         =   "发送" 
      BeginProperty Font  
         Name            =   "Times New Roman" 
         Size            =   9 
         Charset         =   0 
         Weight          =   700 
         Underline       =   0   'False 
         Italic          =   0   'False 
         Strikethrough   =   0   'False 
      EndProperty 
      Height          =   225 
      Left            =   5400 
      TabIndex        =   5 
      Top             =   8040 
      Width           =   390 
   End 
   Begin VB.Label Label2  
      BackColor       =   &H00008080& 
      BorderStyle     =   1  'Fixed Single 
      BeginProperty Font  
         Name            =   "Times New Roman" 
         Size            =   9 
         Charset         =   0 
         Weight          =   700 
         Underline       =   0   'False 
         Italic          =   0   'False 
         Strikethrough   =   0   'False 
      EndProperty 
      ForeColor       =   &H0000FF00& 
      Height          =   315 
      Left            =   5880 
      TabIndex        =   4 
      Top             =   7980 
      Width           =   2325 
   End 
   Begin VB.Label Label3  
      BackColor       =   &H00008080& 
      BorderStyle     =   1  'Fixed Single 
      BeginProperty Font  
         Name            =   "Times New Roman" 
         Size            =   9.75 
         Charset         =   0 
         Weight          =   700 
         Underline       =   0   'False 
         Italic          =   0   'False 
         Strikethrough   =   0   'False 
      EndProperty 
      ForeColor       =   &H0000FF00& 
      Height          =   345 
      Left            =   9090 
      TabIndex        =   3 
      Top             =   7980 
      Width           =   2595 
   End 
   Begin VB.Label Label4  
      BackColor       =   &H00008080& 
      BorderStyle     =   1  'Fixed Single 
      BeginProperty Font  
         Name            =   "Times New Roman" 
         Size            =   9.75 
         Charset         =   0 
         Weight          =   700 
         Underline       =   0   'False 
         Italic          =   0   'False 
         Strikethrough   =   0   'False 
      EndProperty 
      ForeColor       =   &H0000FF00& 
      Height          =   585 
      Left            =   660 
      TabIndex        =   2 
      Top             =   450 
      Width           =   10275 
   End 
   Begin VB.Menu mnSta  
      Caption         =   "&S 状态" 
      Index           =   0 
      Begin VB.Menu mnWay  
         Caption         =   "&1 仪器状态" 
      End 
      Begin VB.Menu mnTakeCtrl  
         Caption         =   "&2 转 监 控" 
      End 
      Begin VB.Menu mnGotoCtrl  
         Caption         =   "&3 强迫监控" 
      End 
      Begin VB.Menu mnDAQ  
         Caption         =   "&4 数据采集" 
      End 
      Begin VB.Menu mnFunc  
         Caption         =   "&5 功能检查" 
      End 
      Begin VB.Menu mnStatus  
         Caption         =   "&6 状态检查" 
      End 
      Begin VB.Menu mnVw  
         Caption         =   "&7 实时监视" 
      End 
   End 
   Begin VB.Menu mnPara  
      Caption         =   "&P 参数" 
      Index           =   1 
      Begin VB.Menu mnParaDef  
         Caption         =   "&1 缺省设置" 
      End 
      Begin VB.Menu mnPara1  
         Caption         =   "&2 参数设置" 
      End 
      Begin VB.Menu mnParaWin  
         Caption         =   "&3 窗参数设置" 
      End 
      Begin VB.Menu mnWinDef  
         Caption         =   "&4 缺省窗参数" 
      End 
      Begin VB.Menu mnWinTime  
         Caption         =   "&5 显示窗时间" 
      End 
      Begin VB.Menu mnWinCopy  
         Caption         =   "&6 复制窗参数" 
      End 
      Begin VB.Menu mnSavePara  
         Caption         =   "&U 存储参数文件" 
      End 
      Begin VB.Menu mnLoadPara  
         Caption         =   "&D 装载参数文件" 
      End 
      Begin VB.Menu mnPswdChange  
         Caption         =   "&C 修改密码" 
      End 
   End 
   Begin VB.Menu mnTime  
      Caption         =   "&T 时间" 
      Index           =   2 
      Begin VB.Menu mnTimeShow  
         Caption         =   "&D 显示时间" 
      End 
      Begin VB.Menu mnTimeSet  
         Caption         =   "&S 设置时间" 
      End 
      Begin VB.Menu mnTimeSyn  
         Caption         =   "&Y 同步时间" 
      End 
   End 
   Begin VB.Menu mnDat  
      Caption         =   "&M 文件" 
      Index           =   3 
      Begin VB.Menu mnDirDat  
         Caption         =   "&1 读文件目录" 
         Index           =   0 
      End 
      Begin VB.Menu mnMoreDat  
         Caption         =   "&2 读事件摘要" 
         Index           =   1 
      End 
      Begin VB.Menu mnDelOneDat  
         Caption         =   "&3 删除一文件" 
      End 
      Begin VB.Menu mnDelAllDat  
         Caption         =   "&4 删全部文件" 
      End 
      Begin VB.Menu mnRcvDat  
         Caption         =   "&5 恢复一文件" 
         Index           =   4 
      End 
      Begin VB.Menu mnOneDat  
         Caption         =   "&6 上传一文件" 
      End 
      Begin VB.Menu mnAllDat  
         Caption         =   "&7 传全部文件" 
      End 
   End 
   Begin VB.Menu mnShow  
      Caption         =   "&R 显示" 
      Index           =   4 
      Begin VB.Menu mnShowWaves  
         Caption         =   "&1 数据波形" 
         Index           =   2 
      End 
      Begin VB.Menu mnShowEvent  
         Caption         =   "&2 触发事件" 
         Index           =   3 
      End 
      Begin VB.Menu mnShowHead  
         Caption         =   "&3 转储文本" 
      End 
      Begin VB.Menu mnShowPara  
         Caption         =   "&4 参数副本" 
      End 
   End 
   Begin VB.Menu mnComm  
      Caption         =   "&C 通信" 
      Index           =   5 
      Begin VB.Menu mnDialModem  
         Caption         =   "&1拨号操作" 
      End 
      Begin VB.Menu mnAnswerModem  
         Caption         =   "&2等待应答" 
      End 
   End 
   Begin VB.Menu mnSys  
      Caption         =   "&Y 系统" 
      Index           =   6 
      Begin VB.Menu mnQuit  
         Caption         =   "&Q 退回系统" 
      End 
      Begin VB.Menu mnSetting  
         Caption         =   "&M 方式设置" 
      End 
   End 
   Begin VB.Menu mnHelp  
      Caption         =   "&H 帮助" 
      Index           =   7 
      Begin VB.Menu mnHelp1  
         Caption         =   "&1 文本帮助" 
      End 
      Begin VB.Menu mnAbout  
         Caption         =   "&2 关于系统" 
      End 
   End 
End 
Attribute VB_Name = "fmMain" 
Attribute VB_GlobalNameSpace = False 
Attribute VB_Creatable = False 
Attribute VB_PredeclaredId = True 
Attribute VB_Exposed = False 
'******************************************************************************************* 
' Main.frm  主窗口 
'******************************************************************************************* 
Option Explicit 
 
Dim sPathSir As String                  '数据文件当前路径 
Dim sPathTxt As String                  '文本文件当前路径 
 
Dim sIc2 As String                      '选择窗号 
Dim flgModeSetting As Boolean           'modem 
Dim sMenu As String                     '菜单选择记录标志 
Dim flgBiasAC As Integer                '曲线显示是否除去直流分量 
Dim nMouseDown As Integer               '鼠标右键按下的次数 
Dim sNote As String                     '解释窗内容 
 
Dim s46 As String                       '用于列表限制格式 
Dim flgTest1 As Integer 
 
' 初始化操作 
Private Sub Form_Initialize() 
    sPath = App.path & "\"                                                  '当前目录 
    fmCover.Show 1                                                          '封面显示 
    LoadInitFile                                                            '加载.ini 
    nNoteTrg = LoadNoteFile(sPath & "NoteTrg.dat", 15, sNoteTrg) 
    LoadParaDataFile sPath & "Pa1.dat", mPa1, mPs1, nPa1, nPs1              '加载.dat 
    If Dir(sPath & "sir", vbDirectory) = "" Then MkDir (sPath & "sir")      '建立子目录 
    If Dir(sPath & "sip", vbDirectory) = "" Then MkDir (sPath & "sip") 
    If Dir(sPath & "txt", vbDirectory) = "" Then MkDir (sPath & "txt") 
    If Dir(sPath & "para", vbDirectory) = "" Then MkDir (sPath & "para") 
End Sub 
 
' 窗体加载操作 
Private Sub Form_Load() 
    With MSComm1                             '关闭串口 
        If .PortOpen Then .PortOpen = False 
        .InputMode = comInputModeText 
    End With 
     
    List1.Visible = False 
    With fmMain 
        .Top = 0: .Left = 0: 
        If .Width >= Screen.Width - 200 Then 
            .Width = Screen.Width: .Height = Screen.Height 
        End If 
    End With 
    Picture1.AutoRedraw = True 
    Picture2.AutoRedraw = True 
     
    FlatBar toolbar1 
    flgModeSetting = False 
     
    InitMenu 0 
    sMenu = "OO0" 
End Sub 
 
'窗体作用初始操作 
Private Sub Form_Activate() 
If flgModeSetting = False Then 
    flgModeSetting = True 
    Command1Click 
End If 
End Sub 
 
'显示说明信息 
Public Sub ShowNotes(sText As String) 
    Label4.Caption = sText 
End Sub 
 
'显示发送信息 
Public Sub ShowSendMsg(sText As String) 
    Label2.Caption = sText 
End Sub 
 
'显示接收信息 
Public Sub ShowRecvMsg(sText As String) 
    Label3.Caption = sText 
End Sub 
 
 
 
'************************************************************************************************** 
'   基 本 监 控 功 能 
'************************************************************************************************** 
'基本命令操作 
Private Function RunCmd1(STX As String, sNote As String, nSleep As Integer, nTmo As Long) As String 
    Dim size%, s$ 
    MSComm1.InputMode = comInputModeText 
    Label2.Caption = "":    Label3.Caption = "":    Label4.Caption = "" 
     
    ShowNotes sNote & "操作" 
     
    s$ = STX & vbCr:    Label2.Caption = s$: Label2.Refresh: 
    If SioTxString(MSComm1, s$) Then 
        ShowNotes "没有设置通信串口, 请设置通信串口 !" 
        Exit Function 
    End If 
     
    Sleep nSleep 
    s$ = "" 
    size% = SioRxLine(MSComm1, s$, SCR, nTmo) 
    Label3.Caption = s$:   Label3.Refresh 
     
    If size% = -1 Then 
        ShowNotes sNote & "操作时间已到" 
    'Else 
    '    Label4.Caption = sNote & "操作成功" 
    End If 
    RunCmd1 = s$ 
End Function 
 
'长响应时间的命令操作 
Private Function RunCmd2(sCmd As String, sNote As String, nSleep As Integer, nTmo As Long) As String 
    Dim s$ 
    Dim size%, i% 
    Label3.Caption = "": 
    Label4.Caption = "执行命令: " & sNote 
     
    Label2.Caption = sCmd:    Label2.Refresh: 
    SioTxString MSComm1, sCmd & vbCr 
    Sleep nSleep 
     
    size% = SioRxLine(MSComm1, s$, SCR, 1000) 
    Label3.Caption = s$:    Label3.Refresh 
     
    If size% < 0 Then 
        Label4.Caption = "Timeout 功能检查" 
        Exit Function 
    End If 
    Sleep 22000 
     
    For i% = 0 To 10 
        size% = SioRxLine(MSComm1, s$, SCR, 1000) 
        Label3.Caption = s$ 
        If size% > 0 Then 
            ShowNotes "功能检查结束" 
            Exit Function 
        End If 
    Next i% 
    Label4.Caption = "时间已到" 
End Function 
 
'多行响应的命令操作 
Private Sub RunRecvLines(sCmd As String, sNote As String, nSleep As Integer, nTmo As Long, n As Integer) 
    Dim i%, size%, s$ 
     
    'PubUserFile = "" 
    List1.Clear:    List1.Visible = True 
    ShowNotes "执行查询命令:" & sNote 
     
    Label2.Caption = sCmd: Label2.Refresh: 
    SioTxString MSComm1, sCmd & vbCr 
     
    For i% = 0 To n% 
        size% = SioRxLine(MSComm1, s$, SCR, nTmo) 
        If s$ = "" Then 
            Exit For 
        Else 
            Label3.Caption = s$: Label3.Refresh 
            List1.AddItem Left(s$, Len(s$) - 1), i% 
            Sleep nSleep 
        End If 
    Next i% 
End Sub 
 
'显示监控状态 
Private Sub ShowCtrl(status As Boolean) 
    If status <> 0 Then 
        Label9.Caption = "监控" 
    Else 
        Label9.Caption = "数采" 
    End If 
End Sub 
 
'核查是否在监控状态 
Private Function CheckCtrl() As Integer 
    Dim s$ 
    s$ = RunCmd1("S ", "短状态", 10, 3000) 
    While Mid(s$, 1, 1) <> "M" 
        If MsgBox("此操作需进入监控状态,OK ?", vbOKCancel) = vbOK Then 
            s$ = RunCmd1("/ ", "条件监控", 1000, 1000) 
        Else 
            ShowCtrl 0: CheckCtrl = 0 
            Exit Function 
        End If 
    Wend 
    ShowCtrl 1: CheckCtrl = 1 
End Function 
 
 
'************************************************************************************************** 
' 状态操作 
'************************************************************************************************** 
'菜单选项: 短状态操作 
Private Sub mnWay_Click() 
    Dim s$ 
    sMenu = "SSt" 
    s$ = RunCmd1("S ", "短状态", 10, 3000) 
    If Len(s$) > 0 Then 
        ShowCtrl Mid(s$, 1, 1) = "M" 
    End If 
    ShowNotes "仪器状态:" & s$ 
End Sub 
 
'菜单选项: 条件监控 
Private Sub mnTakeCtrl_Click() 
    Dim s$ 
    sMenu = "STc" 
    s$ = RunCmd1("/ ", "条件监控", 1000, 1000) 
    If Len(s$) > 0 Then 
        ShowCtrl Mid(s$, 1, 1) = "M" 
    End If 
    ShowNotes "条件监控:" & s$ 
End Sub 
 
'菜单选项: 强迫监控 
Private Sub mnGotoCtrl_Click() 
    Dim s$ 
    sMenu = "SGc" 
    s$ = RunCmd1("\ ", "强迫监控", 0, 1000) 
    If Len(s$) > 0 Then 
        ShowCtrl Mid(s$, 1, 1) = "M" 
    End If 
    ShowNotes "强迫监控:" & s$ 
End Sub 
 
'菜单选项: 数据采集 
Private Sub mnDaq_Click() 
    Dim s$ 
    sMenu = "SDac" 
    s$ = RunCmd1("AQ", "数采状态", 1000, 1000) 
    If Len(s$) > 0 Then 
        ShowCtrl Mid(s$, 1, 1) <> "A" 
    End If 
    ShowNotes "数采状态:" & s$ 
End Sub 
 
'菜单选项:功能检查 
Private Sub mnFunc_Click() 
    Dim s$, s1$, i%, size% 
    sMenu = "SFu" 
    If CheckCtrl = 0 Then 
        Exit Sub 
    End If 
    s1$ = RunCmd1("FT", "启动功能检查", 0, 1000) 
    If s1$ <> "" Then 
        For i% = 0 To 35 
            size% = SioRxLine(MSComm1, s$, SCR, 1000) 
            If size% > 0 Then 
                ShowRecvMsg s$ 
                ShowNotes "功能检查完成" 
                Exit Sub 
            Else 
                ShowRecvMsg Format(i%, "0") 
            End If 
        Next i% 
        ShowNotes "功能检查规定时间已到" 
    End If 
End Sub 
 
'菜单选项:状态检查 
Private Sub mnStatus_Click() 
    sMenu = "SCS" 
    RunRecvLines "ST", "状态检查", 1000, 3000, 5 
End Sub 
 
 
'************************************************************************************************** 
' 参数设置 
'************************************************************************************************** 
'全部参数存入PC文件 
Private Sub mnSavePara_Click() 
    Dim i%, s$, s1$, fname$ 
    sMenu = "Txt" 
    ShowNotes "仪器 => 保存参数 => PC文件" 
     
    CommonDialog1.FileName = "" 
    CommonDialog1.Filter = "Parameter File(*.prm)|*.prm" 
    CommonDialog1.InitDir = sPath & "para\" 
    CommonDialog1.Action = 1 
     
    fname$ = CommonDialog1.FileName 
    If fname$ = "" Then 
        Exit Sub 
    End If 
     
    On Error GoTo lb1 
    Open fname$ For Output As #1 
        For i% = 0 To 41 
            s$ = "EX " & Format(i% + 1, "0") 
            s1$ = RunCmd1(s$, "", 200, 2000) 
            Print #1, s1$ 
        Next i% 
lb1: 
    Close #1 
End Sub 
 
'全部参数加载仪器 
Private Sub mnLoadPara_click() 
   Dim i%, s$, s1$, s2$, fname$ 
    sMenu = "Txt" 
    ShowNotes "PC文件 => 加载参数 => 仪器" 
     
    CommonDialog1.FileName = "" 
    CommonDialog1.Filter = "Parameter File(*.prm)|*.prm" 
    CommonDialog1.InitDir = sPath & "para\" 
    CommonDialog1.Action = 1 
     
    fname$ = CommonDialog1.FileName 
    If fname$ = "" Then 
        Exit Sub 
    End If 
     
    If CheckCtrl = 0 Then 
        Exit Sub 
    End If 
    On Error GoTo lb1 
    Open fname$ For Input As #1 
        For i% = 0 To 41 
            Line Input #1, s1$ 
            If i = 21 Then 
                s1$ = Mid(s1$, 1, 1) 
            End If 
            If i > 8 Then 
                s$ = "SE " & Format(i% + 1, "0") & " " & s1$ 
                s2$ = RunCmd1(s$, "", 200, 2000) 
                If s2$ <> "OK" Then 
                    Close #1 
                    Exit Sub 
                End If 
            End If 
        Next i% 
lb1: 
    Close #1 
End Sub 
 
 
'菜单选项: 缺省设置 
Private Sub mnParaDef_Click() 
    If CheckCtrl = 0 Then 
        Exit Sub 
    End If 
    sMenu = "PMD" 
    RunCmd1 "DE", "参数缺省设置", 1000, 1000 
End Sub 
 
'菜单选项: 一类参数 
Private Sub mnPara1_Click() 
    Dim i%, s$, s1$ 
    List1.Clear:    List1.Visible = True 
'    For i% = 0 To 20                                    '21 => 20 
    For i% = 0 To 23 
        s$ = "EX " & Format(i% + 1, "0") 
        s1$ = RunCmd1(s$, " 参数设置:" & mPa1(i%).sName, 200, 2000) 
        s46 = mPa1(i%).sName 
        List1.AddItem s46 & " = " & LTrim(s1$) 
    Next i% 
     
    For i% = 25 To 39 
        s$ = mPa1(2 + i%).sName                            '30 => 28 
        s1$ = RunCmd1("EX " & Format(4 + i%, "00"), "参数设置: " & s$, 0, 1000) 
        s46 = s$: List1.AddItem s46 & " = " & s1$ 
    Next i% 
     
    sMenu = "PR1" 
     
End Sub 
 
 
'菜单选项: 二类参数 
Private Sub mnPara2_Click() 
    Dim i%, s$, s1$ 
    sMenu = "PR2" 
    List1.Clear:    List1.Visible = True 
    For i% = 0 To 3 
        s$ = mPa1(21 + i%).sName                        '22 => 21 
        s1$ = RunCmd1("EX " & Format(21 + 1 + i%, "0"), " 二类参数: " & s$, 0, 1000) 
        s46 = s$: List1.AddItem s46 & " = " & s1$ 
    Next i% 
End Sub 
 
'菜单选项: 三类参数 
Private Sub mnPara3_Click() 
    Dim i%, s$, s1$ 
    List1.Clear:    List1.Visible = True 
    For i% = 0 To 14 
        s$ = mPa1(28 + i%).sName                            '30 => 28 
        s1$ = RunCmd1("EX " & Format(28 + 1 + i%, "00"), "三类参数: " & s$, 0, 1000) 
        s46 = s$: List1.AddItem s46 & " = " & s1$ 
    Next i% 
    If i% > 14 Then 
        sMenu = "PR3" 
    End If 
End Sub 
 
 
'菜单选项: 窗参数 
Private Sub mnParaWin_Click() 
    Dim i%, s$, s1$ 
    List1.Clear:    List1.Visible = True 
     
    sIc2 = GetNum3(1, 0, 7, "选择参数窗的窗号", ",") 
    If sIc2 = "" Then 
        Label4.Caption = "放弃设置窗参数 !" 
        Exit Sub 
    End If 
     
    sIc2 = Format(sIc2, "0") 
    For i% = 0 To 6 
        's$ = "窗参数:" & 
        s$ = mPa1(14 + i%).sName                    '15 => 14 
        s1$ = RunCmd1("WX " & sIc2 & SP & Format(i% + 14 + 1, "00"), s$, 0, 1000) 
        s46 = s$: List1.AddItem s46 & " = " & s1$ 
    Next i% 
    For i% = 7 To 24                                '26 => 25 
        s$ = mPa1(17 + i%).sName 
        s1$ = RunCmd1("WX " & sIc2 & SP & Format(i% + 18 + 1, "00"), s$, 0, 1000) 
        s46 = s$: List1.AddItem s46 & "= " & s1$ 
    Next i% 
    If i% >= 25 Then 
        sMenu = "PR4" 
    End If 
 
End Sub 
 
 
'编辑操作 
Private Sub List1_DblClick() 
    Dim STX$, k1%, k2%, s$, s1$, i% 
    If Mid(sMenu, 1, 2) <> "PR" Then 
        Exit Sub 
    End If 
    If CheckCtrl = 0 Then 
        Exit Sub 
    End If 
 
    i% = Val(Mid(sMenu, 3, 1)) 
    k1% = List1.ListIndex 
    Select Case i% 
        Case 1:  k2% = k1%: If k1% > 23 Then k2% = k1% + 3        '一类参数 
        Case 2:  k2% = k1% + 21 
        Case 3:  k2% = k1% + 28 
        Case 4: 
                If k1% < 4 Then 
                    k2 = k1 + 14 
                Else 
                    k2% = k1% + 17 
                End If 
    End Select 
     
    s1$ = ParaEditRun(mPa1(k2%).cType, "请输入" & mPa1(k2%).sName, _ 
                    mPa1(k2%).nP, mPa1(k2%).ns, mPa1(k2%).V1, mPa1(k2%).V2) 
    If s1$ = "" Then Exit Sub 
    Select Case i% 
        Case 1:                                     '一类参数 
            If k2% < 24 Then 
                s$ = "SE " & k2% + 1 & SP & s1$ 
            Else 
                s$ = "SE " & k2% + 2 & SP & s1$ 
            End If 
        Case 2:                                      '二类参数 
            s$ = "SE " & k2% + 1 & " " & s1$ 
        Case 3:                                      '三类参数 
            s$ = "SE " & k2% + 1 & " " & s1$ 
        Case 4:                                      '窗参数 
            If k2% < 24 Then 
                s$ = "WS " & sIc2 & SP & k2% + 1 & SP & s1$ 
            Else 
                s$ = "WS " & sIc2 & SP & k2% + 2 & SP & s1$ 
            End If 
    End Select 
     
    If RunCmd1(s$, "设置参数:", 0, 1000) = "OK" Then 
        List1.RemoveItem k1%: 
        s46 = mPa1(k2%).sName: List1.AddItem s46 & " = " & s1$, k1%: List1.ListIndex = k1% 
    End If 
End Sub 
 
 
'菜单选项: 复制窗参数 
Private Sub mnWinCopy_Click() 
    Dim s1$ 
     
    sMenu = "WnC" 
    Label2.Caption = "":    Label3.Caption = "":    Label4.Caption = " 复制窗参数" 
    s1$ = GetNum3(2, 0, 7, "选择复制窗的窗号", " ") 
    If s1$ = "" Then 
        ShowNotes "放弃复制窗" 
    Else 
        RunCmd1 "WM " & s1$, "复制窗参数 ", 1000, 1000 
    End If 
    
End Sub 
 
'菜单选项: 缺省窗参数 
Private Sub mnWinDef_Click() 
    Dim s1$ 
    sMenu = "WnO" 
    ShowNotes "设置缺省窗参数" 
    s1$ = GetNum3(1, 0, 7, "选择缺省窗参数的窗号", " ") 
    If s1$ = "" Then 
        Label4.Caption = "放弃设置窗参数 !" 
    Else 
        RunCmd1 "WC " & s1$, "设置缺省窗参数", 1000, 1000 
    End If 
End Sub 
 
 
'************************************************************************************************** 
' 时间设置 
'************************************************************************************************** 
'菜单选项: 显示窗时间 
Private Sub mnWinTime_Click() 
    Dim i%, size%, s$ 
    'RunCmd1 "WT", "显示窗时间", 1000, 2500 
    sMenu = "WnD" 
    List1.Clear:    List1.Visible = True 
    s$ = "WT" & vbCr: Label2.Caption = s$: Label2.Refresh: SioTxString MSComm1, s$ 
    Sleep 1000 
    For i% = 0 To 7 
        size% = SioRxLine(MSComm1, s$, SCR, 2500) 
        If size% < 0 Then 
            ShowNotes "结束接收窗时间 " & i% 
            Exit For 
        Else 
            ShowNotes "正在接收窗时间 " & i% 
        End If 
        ShowRecvMsg s$: 
        List1.AddItem s$ 
    Next i% 
End Sub 
 
'菜单选项: 显示时间 
Private Sub mnTimeShow_Click() 
    Dim s$ 
    sMenu = "TmD" 
    s$ = RunCmd1("TC", "显示仪器标准时间", 1000, 1000) 
    ShowNotes s$ 
End Sub 
 
'菜单选项: 设置时间 
Private Sub mnTimeSet_Click() 
    Dim s$, s1$ 
    FlagInit = 4 
     
    sMenu = "TmD" 
    s$ = RunCmd1("TC", "读取仪器时间", 1000, 1000) 
    s1$ = GetDateTime 
    If s1$ = "" Then 
        ShowNotes "放弃设置时间" 
    Else 
        's$ = RunCmd1("SC " & s1$, "设置标准时间", 1000, 15000) 
        s$ = "SC " & s1$ & vbCr:  Label2.Caption = s$: SioTxString MSComm1, s$: Delay 1000 
    End If 
End Sub 
 
'菜单选项: 建立同步时间 
Private Sub mnTimeSyn_Click() 
    Dim i%, j%, n%, size%, s$ 
 
    sMenu = "TmS" 
    List1.Clear:    List1.Visible = True 
    s$ = RunCmd1("TS", "读取同步方式", 0, 1000) 
    If s$ <> "" Then 
        Select Case Asc(s$) 
            Case 71: n% = 420       'GPS 
            Case 73: n% = 20        'IRIG 
            Case Else: n% = 0       'No Syn Time device 
        End Select 
    End If 
    j% = 1 
    For i% = 0 To n% 
        Label2.Caption = "Waitting :  " & i%:  Label2.Refresh 
        If MSComm1.InBufferCount > 0 Then 
            size% = SioRxLine(MSComm1, s$, SCR, 1000): Label3.Caption = s$: Label3.Refresh 
            List1.AddItem s$ 
            j% = j% + 1 
        Else 
            Sleep 1000 
        End If 
        If j% > 3 Then 
            ShowNotes "同步操作结束" 
            Exit Sub 
        End If 
    Next i% 
    ShowNotes "同步操作时间已到" 
End Sub 
 
 
'************************************************************************************************** 
' 存储操作 
'************************************************************************************************** 
'菜单选项: 文件目录 
Private Sub mnDirDat_Click(Index As Integer) 
    sMenu = "Dir" 
    RunRecvLines "FD", "DIR 文件目录", 50, 1000, 200 
End Sub 
 
'菜单选项: 文件目录索引 
Private Sub mnMoreDat_Click(Index As Integer) 
    sMenu = "Idx" 
    RunRecvLines "SU", "获取事件文件摘要", 50, 1000, 200 
End Sub 
 
'菜单选项: 删除某一文件数据 
Private Sub mnDelOneDat_Click() 
    Dim s1$ 
    sMenu = "Del" 
    Label2.Caption = "":    Label3.Caption = "":    Label4.Caption = "" 
    If CheckCtrl = 0 Then 
        Exit Sub 
    End If 
 
    s1$ = InputBox("请输入欲删除的文件号") 
    If s1$ = "" Then 
        ShowNotes "放弃删除文件!" 
    Else 
        RunCmd1 "EF " & s1$, "删除指定仪器存储文件", 0, 1000 
    End If 
End Sub 
 
'菜单选项: 删除全部文件数据 
Private Sub mnDelAllDat_Click() 
    sMenu = "DeA" 
    If CheckCtrl = 0 Then 
        Exit Sub 
    End If 
    If MsgBox("真要删除仪器中的全部文件吗 ?", vbOKCancel) = vbOK Then 
        RunCmd1 "EM", "删除全部文件", 0, 1000 
    End If 
End Sub 
 
'菜单选项: 恢复已删除的文件数据 
Private Sub mnRcvDat_Click(Index As Integer) 
    Dim s1$ 
    sMenu = "Rcv" 
    s1$ = InputBox("请输入欲恢复的文件号") 
    If s1$ = "" Then 
        ShowNotes "放弃文件恢复" 
    Else 
        RunCmd1 "UF " & s1$, "恢复指定仪器存储文件", 0, 1000 
    End If 
 End Sub 
 
 
'菜单选项:某一单个文件接收 
Private Sub mnOneDat_Click() 
    Dim sb1() As Byte, ss1() As Byte, sa() As Byte, sb() As Byte, sc() As Byte, sd(2) As Byte 
    Dim i%, j%, n%, n1%, ik%, size%, s$, s1$ 
    Dim c, crc% 
    Dim jj As Byte 
     
    sMenu = "Rf1" 
    Label2.Caption = "": Label3.Caption = "": Label4.Caption = "": Label4.Refresh 
    If CheckCtrl = 0 Then 
        Exit Sub 
    End If 
     
    fmFname1.List1.Clear 
    SioTxString MSComm1, "FD" & vbCr 
    For i% = 0 To 200 
        size% = SioRxLine(MSComm1, s$, SCR, 1000) 
        If s$ = "" Then 
            Exit For 
        Else 
            j% = InStr(s$, " "): s$ = Mid(s$, j% + 1) 
            j% = InStr(s$, " "): s$ = Mid(s$, 1, j% - 1) 
            fmFname1.List1.AddItem LTrim(s$), i% 
            Sleep 50 
        End If 
    Next i% 
    fmFname1.nList = i% - 1 
    fmFname1.Show 1 
    s1$ = fmFname1.sNoFile 
    If s1$ = "" Or fmFname1.sFname = "" Then 
        ShowNotes "放弃操作" 
        GoTo lb1 
    End If 
     
    s$ = sPath & "SIR\" & fmFname1.sFname & Format(s1$, "0") & ".SIR" 
    Open s$ For Binary As #1 
    If Err Then 
        MsgBox "文件不能打开 !!" 
        MSComm1.InputMode = comInputModeText 
        Exit Sub 
    End If 
         
    With MSComm1 
        .InBufferCount = 0 
        .OutBufferCount = 0 
        .InputMode = comInputModeBinary 
    End With 
         
    n% = 0 
    s$ = "TX " & s1$ & vbCr:    Label2.Caption = s$ 
    SioTxString MSComm1, s$ 
     
    ShowNotes "准备,接收数据文件... " 
    For i% = 0 To 15 
        Label2.Caption = " NAK = " & NAK 
        SioTxString MSComm1, Chr(NAK) 
        Sleep 1000 
        size% = SioRxData(MSComm1, sb, 1, 1000) 
        If size% > 0 Then 
            Exit For 
        End If 
        Label3.Caption = i% 
    Next i% 
    If i% >= 15 Then 
        Label4.Caption = "无响应,检查有无文件!!!": Label4.Refresh 
        GoTo lb1 
    End If 
     
    j% = 1 
    Do 
        For i% = 0 To 2         '三次 
            c = sb(0) 
            Select Case c 
                Case SOH: n1% = 128: s$ = "小包" 
                Case STX: n1% = 1024: s$ = "大包" 
                Case EOT: 
                    ShowNotes "收到文件结束标志,发ACK" 
                    ShowSendMsg "ACK = " & ACK 
                    SioTxString MSComm1, Chr(ACK) 
                    Exit Do 
                Case Else: 
                    ShowNotes "非要求命令,请确认监控状态!!!" 
                    GoTo lb1 
            End Select 
             
            size% = SioRxData(MSComm1, sa, 2, 1000) 
            If size% < 0 Then 
                ShowNotes "读取包号超时,退出 !" 
                Exit Do 
            End If 
            If SioRxData(MSComm1, ss1, n1%, 2000) < 0 Then 
                ShowNotes "读包数据内容超时,退出" 
                Exit Do 
            End If 
            If SioRxData(MSComm1, sc, 2, 1000) < 0 Then 
                ShowNotes "未读到数据包的CRC校验字,退出" 
                Exit Do 
            End If 
            ShowRecvMsg sa(0) & ":" & sa(1) & ", " & sc(0) & ":" & sc(1):  Label3.Refresh 
             
            crc% = 0 
            For ik% = 0 To n1% - 1 
                crc% = UpdateCRC(crc%, ss1(ik%)) 
            Next ik% 
            IToC2 crc%, sd(0), sd(1) 
            ShowNotes "读数据包: " & j% 
            jj = j% Mod 256 
             
            If sa(0) = jj And sd(0) = sc(0) And sd(1) = sc(1) Then 
                Put #1, , ss1 
                Label2.Caption = " ACK= " & Chr(ACK) 
                SioTxString MSComm1, Chr(ACK) 
                If SioRxData(MSComm1, sb, 1, 10000) < 0 Then 
                    ShowNotes "未收到下一个命令符 !!!" 
                    GoTo lb1 
                End If 
                Exit For 
            Else 
                ShowNotes "CRC校验出错,请求重发":  Label2.Caption = " NAK= " & Chr(NAK) 
                SioTxString MSComm1, Chr(NAK) 
                If SioRxData(MSComm1, sb, 1, 10000) < 0 Then 
                    ShowNotes "未收到下一个命令符 !!!" 
                    GoTo lb1 
                End If 
            End If 
        Next i% 
        If i% >= 3 Then 
            ShowNotes "已试三次,退出" 
            GoTo lb1 
        End If 
        j% = j% + 1 
    Loop 
    ShowNotes "数据接收结束" 
lb1: 
    Close #1 
    MSComm1.InputMode = comInputModeText 
End Sub 
 
'菜单选项: 全部文件接收 
Private Sub mnAllDat_Click() 
    Dim Files$, filenames$, s$ 
    Dim i%, j%, size%, m1%, crc%, n1%, ik% 
    Dim sb1() As Byte, ss1() As Byte, sa() As Byte, sb() As Byte, sc() As Byte, sd(2) As Byte 
    Dim c 
     
    sMenu = "RfA" 
    Label2.Caption = "":    Label3.Caption = "":    Label4.Caption = "" 
    If CheckCtrl = 0 Then 
        Exit Sub 
    End If 
     
    fmFname.Label1.Caption = "选择保存全部仪器文件的PC文件名" 
    fmFname.Combo1.Enabled = False 
    fmFname.Dir1.path = sPath & "sir" 
    fmFname.Text1.Text = "" 
    fmFname.Show 1 
    If fmFname.FullPath.Text = "" Then 
        fmFname.Combo1.Enabled = True 
        Exit Sub 
    End If 
    Files$ = fmFname.FullPath.Text 
     
    With MSComm1 
        .InBufferCount = 0 
        .OutBufferCount = 0 
        .InputMode = comInputModeBinary 
    End With 
     
    List1.Clear:    List1.Visible = True 
     
    s$ = "TM" & vbCr:     Label2.Caption = s$ 
    SioTxString MSComm1, s$ 
    Label4.Caption = "正在... 发送= " & s$:    Label4.Refresh 
     
    Do 
        For i% = 0 To 20 
            SioTxString MSComm1, Chr(NAK) 
            Label2.Caption = " NAK = " & NAK: Label4.Caption = " ... 发送 NAK " & i%: Label4.Refresh 
            size% = SioRxData(MSComm1, sb, 1, 3000) 
            If size% > 0 Then 
                Label3.Caption = "sb(0)= " & sb(0):  Label3.Refresh 
                c = sb(0) 
                Select Case c 
                Case BOF: 
                    Label4.Caption = "串行通信... 返回 BOF= " & Str(sb(0)): Label4.Refresh 
                    Exit For 
                Case CAN: 
                    s$ = Chr(ACK) 
                    Label2.Caption = s$ 
                    SioTxString MSComm1, s$ 
                    Label4.Caption = "接收文件结束":  Label4.Refresh 
                    GoTo lb1    'Exit Sub 
                End Select 
            End If 
            Label4.Caption = "第" & i% & "号读取超时": Label4.Refresh 
            If i% >= 20 Then 
                Label4.Caption = " 请 切 换 到 监 控 状 态 !!!": Label4.Refresh 
                GoTo lb1  'MSComm1.InputMode = comInputModeText: Exit Sub 
            End If 
        Next i% 
             
        size% = SioRxData(MSComm1, sb, 2, 1000) 
        If size% < 0 Then 
            Label4.Caption = " 接收文件退出 !!!" 
            GoTo lb1  'Exit Sub 
        End If 
         
        m1% = sb(0) * 256 + sb(1) 
        Label3.Caption = "File code:" & m1% 
        filenames$ = Files$ & m1% & ".SIR" 
        Open filenames$ For Binary As #1 
        If Err Then 
            MsgBox "File can not open !!" 
            GoTo lb1 
        End If 
        List1.AddItem filenames$ 
        ShowNotes " 文件:" & filenames$:        Label4.Refresh 
     
        For i% = 0 To 15 
            SioTxString MSComm1, Chr(NAK): Label2.Caption = " NAK = " & i%: Label2.Refresh 
            size% = SioRxData(MSComm1, sb, 1, 3000) 
            If size% > 0 Then Exit For 
        Next i% 
        If i% >= 15 Then 
            Label4.Caption = " 读包退出 !!!": Label4.Refresh 
            GoTo lb1 
        End If 
        Label3.Caption = sb(0): Label3.Refresh 
         
        j% = 1 
        Do 
            For i% = 0 To 2 
                c = sb(0): Label3.Caption = "Command Code:" & c 
                Select Case c 
                    Case SOH: n1% = 128 
                    Case STX: n1% = 1024 
                    Case CAN: Exit Do 
                    Case EOT: 
                        Label4.Caption = "接收全部文件结束": Label4.Refresh 
                        Label2.Caption = "" 
                        SioTxString MSComm1, Chr(ACK) 
                        Exit Do 
                    Case Else 
                        Label4.Caption = "接收字符出错, 文件名为:" & filenames 
                        GoTo lb1 
                End Select 
                 
                If SioRxData(MSComm1, sa, 2, 1000) < 0 Then 
                    Label4.Caption = "无包号数据 !!!" 
                    GoTo lb1 
                End If 
                Label3.Caption = "packge:" & Str(sa(0)) 
                Label4.Caption = "正在接收文件... ": Label4.Refresh 
                If SioRxData(MSComm1, ss1, n1%, 3000) < 0 Then 
                    Label4.Caption = "无包内数据 !!!" 
                    GoTo lb1 
                End If 
                If SioRxData(MSComm1, sc, 2, 1000) < 0 Then 
                    Label4.Caption = "无校验数据 !!!" 
                    GoTo lb1 
                End If 
                 
                crc% = 0 
                For ik% = 0 To n1% - 1 
                    crc% = UpdateCRC(crc%, ss1(ik%)) 
                Next ik% 
                IToC2 crc%, sd(0), sd(1) 
                 
                If sd(0) = sc(0) And sd(1) = sc(1) Then 
                    Put #1, , ss1 
                    Label2.Caption = "" 
                    SioTxString MSComm1, Chr(ACK) 
                    If SioRxData(MSComm1, sb, 1, 10000) < 0 Then 
                        Label4.Caption = "无命令出现 !!!" 
                        GoTo lb1 'Exit Do 
                    End If 
                    Exit For 
                Else 
                    Label2.Caption = "" 
                    SioTxString MSComm1, Chr(NAK) 
                    If SioRxData(MSComm1, sb, 1, 10000) < 0 Then 
                        Label4.Caption = "无命令出现 !!!" 
                        GoTo lb1 'Exit Do 
                    End If 
                End If 
                Label3.Caption = sb(0) 
            Next i% 
            j% = j% + 1 
        Loop 
        Close #1 
    Loop 
lb1: 
    MSComm1.InputMode = comInputModeText 
    fmFname.Combo1.Enabled = True 
End Sub 
 
'************************************************************************************************* 
' 文件显示 
'************************************************************************************************* 
'菜单选项:转存的文本文件显示 
Private Sub mnShowHead_Click() 
    Dim b1 As Byte, i%, i2%, n% 
    Dim fname$, s$, s2$ 
     
    sMenu = "LTxt" 
    CommonDialog1.FileName = "" 
    CommonDialog1.Filter = "All Files (*.*)|*.*| Head File(*.hd)|*.hd| Trig File(*.sip)|*.sip| Data File(*.x)|*.?" 
    CommonDialog1.InitDir = sPath & "txt\" 
    CommonDialog1.Flags = OFN_READONLY 
    CommonDialog1.Action = 1 
     
    fname$ = CommonDialog1.FileName 
    ShowNotes "显示转储的文本文件 " & fname$ 
    If fname$ = "" Then 
        Exit Sub 
    End If 
    On Error Resume Next 
    Open fname$ For Input As #1 
        If Err Then 
            ShowNotes "无文件调用!" 
            Close #1 
            Exit Sub 
        End If 
        List1.Clear 
        Do While Not EOF(1) 
            Line Input #1, s$ 
            List1.AddItem s$ 
        Loop 
        List1.Visible = True 
        List1.Refresh 
    Close 1# 
End Sub 
 
'菜单选项:读参数文件 
Private Sub mnShowPara_click() 
   Dim i%, s$, s1$, fname$ 
    sMenu = "LTxt" 
    ShowNotes "从PC文件读取参数" 
    List1.Clear: List1.Visible = True 
     
    CommonDialog1.FileName = "" 
    CommonDialog1.Filter = "Parameter File(*.prm)|*.prm" 
    CommonDialog1.InitDir = sPath & "para\" 
    CommonDialog1.DefaultExt = 1 
    CommonDialog1.ShowOpen 
     
    fname$ = CommonDialog1.FileName 
    If fname$ = "" Then 
        Exit Sub 
    End If 
 
    On Error GoTo lb1 
    Open fname$ For Input As #1 
        For i% = 0 To 41 
            Line Input #1, s1$ 
            List1.AddItem mPa1(i%).sName & " :  " & s1$ 
        Next i% 
    Close #1 
    Exit Sub 
lb1: ShowNotes "文件不存在" 
End Sub 
 
'菜单选项:触发文件显示 
Private Sub mnShowEvent_Click(Index As Integer) 
    Dim m_Str2(20) As m_String2 
    Dim b1 As Byte, i%, i2%, n% 
    Dim filenames$, s$, s2$ 
     
    sMenu = "LTrg" 
    CommonDialog1.FileName = "" 
    CommonDialog1.Filter = "All Files|*.SIP" 
    CommonDialog1.InitDir = sPath & "SIP\" 
    CommonDialog1.Flags = OFN_READONLY 
    CommonDialog1.Action = 1 
     
    filenames$ = CommonDialog1.FileName 
    If filenames$ = "" Then 
        Exit Sub 
    End If 
    On Error Resume Next 
    Open filenames$ For Input As #1 
        If Err Then 
            ShowNotes "无文件调用!" 
            Close #1 
            Exit Sub 
        End If 
        Line Input #1, s$ 
    Close 1# 
     
    If s$ = "" Then 
        ShowNotes "文件类型不匹配或损坏." 
        Exit Sub 
    End If 
    s2$ = "" 
     
    List1.Clear:    List1.Visible = True 
    i% = 0: n% = 0: i2% = 0 
    Do 
        n% = InStr(s$, ",") 
        m_Str2(i%).StrX = Left(s$, n% - 1) 
        s$ = Mid(s$, n% + 1) 
        i% = i% + 1 
    Loop Until i% >= 19 
    n% = InStr(s$, "!") 
    m_Str2(i%).StrX = Left(s$, n% - 1) 
     
    s$ = filenames$ 
    n% = InStr(s$, "\") 
    While n% <> 0 
        s$ = Mid(s$, n% + 1) 
        n% = InStr(s$, "\") 
    Wend 
    List1.AddItem "  The Record File Name is: " & s$ 
    List1.AddItem "  Unit Serial Number is:   " & m_Str2(18).StrX 
    List1.AddItem "  Channel 1 Pos. Max Value is:  " & m_Str2(0).StrX & " gal.      Received time is:  " & m_Str2(6).StrX 
    List1.AddItem "  Channel 1 Neg. Max Value is:  " & m_Str2(1).StrX & " gal.      Received time is:  " & m_Str2(7).StrX 
    List1.AddItem "  Channel 2 Pos. Max Value is:  " & m_Str2(2).StrX & " gal.      Received time is:  " & m_Str2(8).StrX 
    List1.AddItem "  Channel 2 Neg. Max Value is:  " & m_Str2(3).StrX & " gal.      Received time is:  " & m_Str2(9).StrX 
    List1.AddItem "  Channel 3 Pos. Max Value is:  " & m_Str2(4).StrX & " gal.      Received time is:  " & m_Str2(10).StrX 
    List1.AddItem "  Channel 3 Neg. Max Value is:  " & m_Str2(5).StrX & " gal.      Received time is:  " & m_Str2(11).StrX 
    List1.AddItem "  The Main Frequency is:  " & Val(m_Str2(12).StrX) * 0.01 & " Hz" 
    List1.AddItem "  The Duration Time is:  " & m_Str2(13).StrX & " ms." 
    List1.AddItem "  The 1st Frequency response sprectrum Max Value is:  " & m_Str2(14).StrX & " gal." 
    List1.AddItem "  The 2nd Frequency response sprectrum Max Value is:  " & m_Str2(15).StrX & " gal." 
    List1.AddItem "  The 3nd Frequency response sprectrum Max Value is:  " & m_Str2(16).StrX & " gal." 
    List1.AddItem "  The 4nd Frequency response sprectrum Max Value is:  " & m_Str2(17).StrX & " gal." 
    List1.AddItem "  The Refernce Intention is:  " & m_Str2(19).StrX & " ." 
     
    ShowNotes "显示触发文件 " & filenames$ 
End Sub 
 
' 打印列表 
Sub Print_List() 
    Dim i%, s$ 
    Printer.PrintQuality = -4 
    For i% = 0 To List1.ListCount - 1 
        s$ = List1.List(i) 
        Printer.Print s$ 
    Next i% 
    Printer.EndDoc 
End Sub 
 
 
'菜单选项:图形显示 
Private Sub mnShowWaves_Click(Index As Integer) 
    Dim filenames As String 
    Dim l As Long, s$, s0$, s1$, s2$, n%, i% 
     
    List1.Clear:    List1.Visible = False 
    Label1.Caption = "": Label2.Caption = "":   Label3.Caption = "": 
    ShowNotes " 图形显示" 
     
    CommonDialog1.FileName = "" 
    CommonDialog1.Filter = "All Files|*.SIR" 
    CommonDialog1.InitDir = sPath & "SIR\" 
    CommonDialog1.Flags = OFN_READONLY 
    CommonDialog1.ShowOpen 
    s$ = CommonDialog1.FileTitle 
    n% = InStr(s$, ".") 
    If n% <= 0 Then 
        ShowNotes "非适当文件名, 重选" 
        Exit Sub 
    End If 
    sPathTxt = sPath & "txt\" & Left(s$, n% - 1) 
     
    sPathSir = CommonDialog1.FileName 
    filenames = sPathSir 
    If filenames = "" Then 
        ShowNotes "非适当文件名, 重选" 
        Exit Sub 
    End If 
    l = filelen(filenames) 
    If l < 100 Then 
        ShowNotes "非适当文件, 重选" 
        Exit Sub 
    End If 
        
    If LoadDataFile(filenames) < 0 Then 
        Exit Sub 
    End If 
 
    With m_Head 
        s2$ = "" 
        For i% = 1 To 32 
            s2$ = s2$ & Chr(.hcmnt(i)) 
        Next i% 
        s1$ = "仪器号:" & .hsnum & "   文件名:" & s$ & "    用户注释:" & s2$ 
        s$ = "触发时间:" & yyyy$ & "年 " & .start_time(2) & "月 " & .start_time(3) & "日 " 
        s$ = s$ & .start_time(4) & "时 " & .start_time(5) & "分 " & .start_time(6) & "秒" 
        s$ = s$ & "         经度:" & Chr(.EW) & .hlgdeg & "度 " & .hlgmin & "分 " & .hlgsec & "秒" 
        s$ = s$ & "         纬度:" & Chr(.ns) & .hltdeg & "度 " & .hltmin & "分 " & .hltsec & "秒" 
        ShowNotes s1$ & Chr(13) & s$ 
        sNote = s1$ & vbCr & s$ 
    End With 
     
    If m_Head.hazm1 > 0 Then 
        s$ = " 偏" & Format(m_Head.hazm1, "0") & "度" 
    Else 
        s$ = "" 
    End If 
     
    w.Init 3, nData, yData, Ts 
    w.SetColorFont RGB(64, 64, 64), RGB(192, 192, 192), RGB(192, 192, 192) 
    w.SetColorLine RGB(192, 192, 192), vbRed, vbMagenta 
    w.SetColorWaveCh 0, vbGreen 
    w.SetColorWaveCh 1, RGB(255, 255, 0) 
    w.SetColorWaveCh 2, RGB(127, 127, 255) 
    w.SetChannel 0, "Ch1:垂直" & "", vbGreen, sUnit 
    w.SetChannel 1, "Ch2:北南" & s$, vbGreen, sUnit 
    w.SetChannel 2, "Ch3:东西" & s$, vbGreen, sUnit 
    w.Run Picture1, yData 
    w.RunIRIG Picture2, IRIG 
    sMenu = "Wave" 
End Sub 
 
' 波形 X 轴方向滚动 
Private Sub HScroll1_Change() 
    Dim r# 
    If sMenu <> "Wave" Then Exit Sub 
    r# = HScroll1.Value / HScroll1.Max 
    w.SetStartX 0, r#, Picture1, yData 
    w.RunIRIG Picture2, IRIG 
End Sub 
 
'鼠标点动 
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) 
    Dim k1 As Long 
    If sMenu <> "Wave" Then Exit Sub 
    If Button = 1 Then 
        w.ShowCursor Picture1, yData, x 
    Else 
        k1 = w.ShowLocal(Picture1, yData, x, nMouseDown) 
        If nMouseDown < 2 Then 
            nMouseDown = nMouseDown + 1 
        Else 
            nMouseDown = 0 
            w.RunIRIG Picture2, IRIG 
            HScroll1.Value = (k1 / nData) * HScroll1.Max 
        End If 
    End If 
End Sub 
 
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) 
    If sMenu <> "Wave" Then Exit Sub 
    If Button = 1 Then 
        w.ShowCursor Picture1, yData, x 
    End If 
End Sub 
 
 
Private Sub Text1_Change() 
 
End Sub 
 
'************************************************************************************************** 
'工具栏操作 
'************************************************************************************************** 
Private Sub Toolbar1_ButtonClick(ByVal Button As ComctlLib.Button) 
    Dim i%, b(10) As Single 
    If Button.Index = 9 Then 
        CommonDialog1.PrinterDefault = True 
        CommonDialog1.CancelError = True 
        CommonDialog1.Flags = ALLPAGES 
        CommonDialog1.ShowPrinter 
        If Err Then Exit Sub 
        If Mid(sMenu, 1, 1) = "L" Then 
            ShowNotes "打印列表 ..." 
            Print_List 
        End If 
        If Mid(sMenu, 1, 1) = "W" Then 
            ShowNotes "打印波形 ... " 
            w.RunPrn Printer, yData, IRIG, sNote 
        End If 
        Printer.EndDoc 
    End If 
     
    If sMenu <> "Wave" Then Exit Sub 
    Select Case Button.Index 
        Case 1:  w.SetScaleX 1, 0.8, Picture1, yData 
                 w.RunIRIG Picture2, IRIG 
        Case 2:  w.SetScaleX 1, 1.25, Picture1, yData 
                 w.RunIRIG Picture2, IRIG 
 
        Case 3:  w.SetScaleY 1, 0.8, Picture1, yData 
        Case 4:  w.SetScaleY 1, 1.25, Picture1, yData 
        Case 10:  w.SetScaleY 1, 0.5, Picture1, yData 
        Case 11:  w.SetScaleY 1, 2#, Picture1, yData 
         
        Case 5:  'Curve_Init 
                 HScroll1.Value = 0 
                 w.SetScaleX 0, nData, Picture1, yData 
                 w.RunIRIG Picture2, IRIG 
        Case 6:  '恢复初始 
                 HScroll1.Value = 0 
                 w.SetScale0 
                 w.Run Picture1, yData 
                 w.RunIRIG Picture2, IRIG 
        Case 7:  '直流偏移 
                If flgBiasAC = 0 Then 
                    flgBiasAC = 1 
                    For i% = 0 To nCh - 1 
                        b(i%) = dAve(i%) 
                    Next i% 
                Else 
                    flgBiasAC = 0 
                    For i% = 0 To nCh - 1 
                        b(i%) = 0 
                    Next i% 
                End If 
                w.SetBias nCh, b, Picture1, yData 
 
        Case 8: '文件 
            Beep 
            If sPathSir <> "" Then 
                SaveTextFile sPathSir, sPathTxt 
                ShowNotes "从数据文件生成文本文件(.sir => .hd, .xx, .sip)" 
            Else 
                ShowNotes "请执行图形显示,以确定数据文件" 
            End If 
    End Select 
End Sub 
 
'************************************************************************************************** 
'菜单屏蔽 
'************************************************************************************************** 
Sub InitMenu(bl As Byte) 
    Select Case bl 
        Case 1: 
            mnSta(0).Enabled = True 
            mnPara(1).Enabled = True 
            mnTime(2).Enabled = True 
            mnDat(3).Enabled = True 
        Case 0: 
            mnSta(0).Enabled = False 
            mnPara(1).Enabled = False 
            mnTime(2).Enabled = False 
            mnDat(3).Enabled = False 
    End Select 
    If flgMode = 0 Then 
        mnComm(5).Enabled = False 
    Else 
        mnComm(5).Enabled = True 
    End If 
End Sub 
'调试时用于显示菜单 
Private Sub Label7_DblClick() 
    mnSta(0).Enabled = True 
    mnPara(1).Enabled = True 
    mnTime(2).Enabled = True 
    mnDat(3).Enabled = True 
    mnComm(5).Enabled = True 
    flgTest1 = 1 
End Sub 
 
 
'************************************************************************************************** 
' 求助操作 
'************************************************************************************************** 
'菜单选项: 求助-文本 
Private Sub mnHelp1_Click() 
   sMenu = "Hlp" 
   Shell "c:\windows\winhelp " & sPath & "gdqj.hlp", 1 
End Sub 
 
'菜单选项: 求助-关于 
Private Sub mnAbout_Click() 
    sMenu = "Abt" 
    fmMark.Label1 = "GDQJ-1A-V3.0 for Windows 地震动强度远程采集系统" 
    fmMark.Label2 = "国家地震局 哈尔滨工程力学研究所" 
    'fmMark.Picture1.Picture = "gdqj2.bmp" 
    fmMark.Show 1 
End Sub 
 
 
'************************************************************************************************** 
'   菜 单 选 项 操 作 
'************************************************************************************************** 
'菜单选项: 系统操作 
Private Sub mnQuit_Click() 
    If flgMode = 0 Then 
        SioTxString MSComm1, "QT" & vbCr 
    End If 
    If MSComm1.PortOpen Then 
        MSComm1.PortOpen = False 
    End If 
    SaveInitFile 
    End 
End Sub 
 
'菜单选项: 系统-方式设置 
Private Sub mnSetting_Click() 
    Command1Click 
End Sub 
Private Sub Command1Click() 
    Label2.Caption = "": Label3.Caption = "": Label4 = "": Label4.Refresh 
    DelAA 
    If flgMode = 1 Then 
        HandleOff 
    End If 
    fmSetComm.Show 1 
    If fmSetComm.flgChange = 0 Then 
        Label4.Caption = "放弃串口设置" 
        Exit Sub 
    End If 
    CommInit MSComm1, CommPort, CommSetting 
    Label2.Caption = CommPort & ", " & CommSetting: Label2.Refresh 
    Sleep 1000 
    Label4.Caption = "设置串口和调制解调器 !": Label4.Refresh 
    flgConn = 0:    flgDial = 0 
     
   If flgMode = 1 Then 
        If SetupModem = 0 Then 
           SetAA 
            flgConn = 1 
           InitMenu 0 
          Label4.Caption = "公用电话网络方式: 自动应答状态" 
       Else 
          Sleep 1500 
         InitMenu 0: 'mnComm(6).Enabled = False 
           Label4.Caption = "公用电话网络方式: 设置失败状态" 
        End If 
    Else 
        If CheckPassword = 0 Then           '检查口令 
            InitMenu 1 
            Label4.Caption = "串口直接连接方式: 连接成功状态(口令通过)" 
        Else 
            Sleep 1500 
            InitMenu 0 
           Label4.Caption = "串口直接连接方式: 设置失败状态(重设串口或口令)" 
        End If 
    End If 
'    flgDial = 0:    flgConn = 0 
End Sub 
 
Sub Command2Click() 
    SetupModem 
End Sub 
'建立调制解调器, 设置在自动应答状态 
Function SetupModem() 
    Dim i%, size%, s$ 
    Label2.Caption = "": Label3 = "": Label4 = "" 
    If Not MSComm1.PortOpen Then 
        Label4.Caption = " 请设置串口!":    Label4.Refresh 
        SetupModem = -1 
        Exit Function 
    End If 
     
    Label4.Caption = "初始化Modem":    Label4.Refresh 
    MSComm1.DTREnable = True 
    MSComm1.RTSEnable = True 
     
    s$ = "ATE0S7=60S11=60V1Q0S0=1" & vbCr 
    Label2.Caption = s$:    Label2.Refresh 
    SioTxString MSComm1, s$:    Sleep 300: 
    For i% = 0 To 2 
        s$ = "" 
        size% = SioRxLine(MSComm1, s$, SCR, 3000) 
        Label3.Caption = s$:    Label3.Refresh 
        If size% < 0 Then 
            Exit For 
        End If 
        If InStr(s$, "OK") > 0 Then 
            Label4.Caption = "调制解调器设置成功 !!" 
            SetupModem = 0 
            Exit Function 
        End If 
    Next i% 
    Label4.Caption = "调制解调器设置失败 !!!":    Label4.Refresh 
    SetupModem = -2 
End Function 
 
 
' 通讯设置与操作 
'菜单选项: 通信-拨号方式 
Private Sub mnDialModem_Click() 
    Command3Click 
End Sub 
Sub Command3Click() 
    MSComm1.InputMode = comInputModeText 
    flgDial = 1 
    If flgMode = 0 Then 
        Label4.Caption = " 直接连接方式不需要拨号 !": Label4.Refresh 
        Exit Sub 
    End If 
         
    DelAA 
    If flgConn > 0 Then 
        Sleep 2000: flgConn = 0                         '2000/11/26 
        Label4.Caption = " 请先挂机后再拨号 !":        Label4.Refresh 
        HandleOff 
        flgConn = 0:        flgDial = 0 
    End If 
     
    If RunDial = 0 Then                     '拨号 
        flgConn = 1     '1/12 
        Sleep 500 
        If CheckPassword = 0 Then           '检查口令 
            InitMenu 1 
            Exit Sub 
        End If 
    End If 
    Sleep 2000 
    InitMenu 0 
    flgConn = 0:    flgDial = 0 
    HandleOff                                 '挂机 
End Sub 
 
'拨号操作 
Function RunDial() 
    Dim size%, s$, s1$ 
    Label2.Caption = "":    Label3.Caption = "":    Label4.Caption = " 启动Modem" 
     
    fmSelPhone.Show 1 
    s$ = sPhoneNum 
    If s$ = "" Or flgCancel = True Then 
        Label4.Caption = "放弃拨号 :": Label4.Refresh 
        RunDial = -1 
        Exit Function 
    End If 
     
    Label4.Caption = " 正在拨号 " & s$:    Label4.Refresh 
    s1$ = "AT DT" & s$ & vbCr: Label2.Caption = s1$: Label2.Refresh 
    SioTxString MSComm1, s1$:    'Sleep 5000 
         
    size% = SioRxLine(MSComm1, s$, SCR, 40000) 
    Label3.Caption = s$:    Label3.Refresh 
'    SioFlush MSComm1 
    If size% < 0 Then 
        Label4.Caption = "拨号超时, 连接失败 !": Label4.Refresh 
        RunDial = -2 
        Exit Function 
    End If 
    If InStr(s$, "CONNECT") <= 0 Then 
        Label4.Caption = "无拨号音, 或占线!!!": Label4.Refresh 
        RunDial = -3 
        Exit Function 
    End If 
lb1: 
    Label4.Caption = "话路连接成功 !!": Label4.Refresh 
    RunDial = 0 
 
End Function 
 
'检查口令 
Function CheckPassword() 
    Dim s$, s1$, s2$, i%, n%, size% 
    Label4.Caption = "检查口令!!":    Label4.Refresh 
    SioTxString MSComm1, vbCr:  Sleep 3000 
    s$ = "": s2$ = "" 
    For i% = 0 To 5 
        size% = SioRxString0(MSComm1, s1$, 0, 2000) 
        s$ = s$ & s1$ 
         
        n% = InStr(s1$, vbCr) 
        While n% > 0 
            s2$ = s2$ & Left(s1$, n% - 1) & "" 
            s1$ = Mid(s1$, n% + 1) 
            n% = InStr(s1$, vbCr) 
        Wend 
        s2$ = s2$ & s1$ & ":" & i% 
        Label2.Caption = s$ 
        Label3.Caption = s2$:        Label3.Refresh 
        If InStr(s$, "PASSWORD") > 0 Then 
            fmPswd.Show 1            's1$ = "IEM9804" & vbCR 
            Label2.Caption = sPassword:  Label2.Refresh 
            If sPassword = "" Or flgCancel = True Then 
                GoTo lb1 
            End If 
             
            SioTxString MSComm1, sPassword & vbCr:     Sleep 500 
            size% = SioRxString(MSComm1, s$, 1, 1000) 
            Label3.Caption = s$: Label3.Refresh: 
                                                            's$ = Chr(6) 
            If Asc(s$) = 6 Then 
                Label4.Caption = "口令正确, 通信联接成功 !": Label4.Refresh 
                If flgKeepPwd = 0 Then 
                    sPassword = "" 
                End If 
                SioFlush MSComm1 
                CheckPassword = 0 
                Exit Function 
            End If 
            Label4.Caption = "口令不正确 ! " 
            sPassword = "" 
        End If 
    Next i% 
    Label4.Caption = "通信联接未成功, 超时退出 !" 
lb1: 
    s$ = "QT" & vbCr:       Label2.Caption = s$ 
    SioTxString MSComm1, s$ 
    CheckPassword = -1 
End Function 
 
'挂机操作 
Sub HandleOff() 
    Dim size%, s$ 
    Label4.Caption = "正在挂机...请稍候":        Label4.Refresh 
    Sleep 100: MSComm1.DTREnable = True 
    Sleep 100: MSComm1.DTREnable = False 
    Sleep 500: MSComm1.DTREnable = True 
     
    s$ = "AT H0": Label2.Caption = s$:    Label2.Refresh: 
    SioTxString MSComm1, s$ & vbCr 
    Sleep 1000 
    size% = SioRxLine(MSComm1, s$, SCR, 2000) 
    Label3.Caption = s$: Label4.Caption = "挂机":         Label4.Refresh 
 
End Sub 
 
'菜单选项: 通信-应答方式 
Private Sub mnAnswerModem_Click() 
    Dim s$ 
    MSComm1.InputMode = comInputModeText 
    Label2.Caption = "":    Label3.Caption = "":    Label4.Caption = "" 
     
    If flgMode = 1 Then 
        Label4.Caption = "结束通信,发结束信号":    Label4.Refresh 
        s$ = "QT" & vbCr:   Label2.Caption = s$ 
        SioTxString MSComm1, s$ 
        Sleep 500 
    End If 
     
    InitMenu 0 
    flgConn = 0:    flgDial = 0 
    HandleOff 
    Sleep 1000 
    SetAA 
End Sub 
 
'等待连接事件, 自动应答 
Public Sub MSComm1_OnComm() 
If flgConn <= 0 Then 
    Exit Sub 
End If 
Select Case MSComm1.CommEvent 
    ' Events 
    Case comEvCD    ' Change in the CD line. 
         'MsgBox "RunAA" 
         '   flgConn = 2 
            DelAA         '  : RunAA    : SetAA 
            HandleOff 
            flgConn = 0 
         '   flgDial = 0 
    End Select 
 
End Sub 
 
'设置自动应答 
Sub SetAA() 
If flgMode = 1 And flgConn = 0 And flgDial = 0 Then 
    Timer1.Interval = 5000 
    Timer1.Enabled = True 
    MSComm1.InBufferCount = 0 
End If 
End Sub 
 
'取消自动应答 
Sub DelAA() 
'If flgMode = 1 Then 
    Timer1.Enabled = 0 
    MSComm1.RThreshold = 0 
    MSComm1.InBufferCount = 0 
'End If 
End Sub 
 
'自动应答操作 
Sub RunAA() 
     
    Dim MyData, MyTime, iRec As Integer, cRec(256) As Byte 
    Dim ib As Boolean, c 
    Dim n%, m%, d%, h%, nbuf%, s$, s1$, s2$ 
    Dim sb1() As Byte, ss1() As Byte, sa() As Byte, sb() As Byte, sc() As Byte, sd(2) As Byte 
    Dim size%, yq1%, mi%, se%, n1%, i%, j%, crc%, ik% 
    Dim jj As Byte 
    Dim stotal&, filenames$ 
     
    Label2.Caption = "":    Label3.Caption = "":    Label4.Caption = "" 
    InitMenu 0 
 
    Label4.Caption = " 等待 CONNECT, 可通过菜单退出!":  Label4.Refresh 
     
    s1$ = "" 
    
    Do 
        nbuf% = MSComm1.InBufferCount 
        If nbuf% > 0 Then 
            Sleep 20 
            s$ = MSComm1.Input 
            s1$ = s1$ & s$ 
            Label3.Caption = s1$ & "," & nbuf%:  Label3.Refresh 
            If InStr(s1$, "CONNECT") > 0 Then 
                Label4.Caption = "通信连接成功 !!!":  Label4.Refresh 
                SioFlush MSComm1 
                Exit Do 
            End If 
        End If 
 
        DoEvents 
    Loop 
    MSComm1.InputMode = comInputModeBinary 
     
    SioTxString MSComm1, Chr(ACK) 
    MSComm1.InputMode = comInputModeText 
     
    size% = SioRxLine(MSComm1, s$, SCR, 10000) 
    SioFlush MSComm1 
         
    MSComm1.InputMode = comInputModeBinary 
    n% = 0 
    Sleep 500 
    Do 
        Label2.Caption = "NAK =>  " & n%:  Label2.Refresh:   'Sleep 1000 
        SioTxString MSComm1, Chr(NAK) 
        size% = SioRxData(MSComm1, sb, 1, 10000) 
        n% = n% + 1 
        If n% >= 15 Then GoTo lb1 
        DoEvents 
    Loop Until size% > 0 
         
    MyData = Now 
    yq1% = Year(MyData) - 1998: m% = Month(MyData): d% = Day(MyData) 
    MyTime = Time 
    h% = Hour(MyTime): mi% = Minute(MyTime): se% = Second(MyTime) 
    stotal& = (yq1% * 12& + m%) * 31& + d% 
    stotal& = ((stotal& * 24& + CLng(h%)) * 60 + CLng(mi%)) * 60 + CLng(se%) 
    filenames$ = sPath & "SIP\" & stotal& & ".SIR" 
     
    Open filenames$ For Binary As #1 
     
    j% = 1 
    Do 
        For i% = 0 To 2         '三次 
            c = sb(0) 
            Select Case c 
                Case SOH: n1% = 128: s$ = "小包" 
                Case STX: n1% = 1024: s$ = "大包" 
                Case EOT: 
                    ShowNotes "收到文件结束标志,发ACK" 
                    ShowSendMsg "ACK = " & ACK 
                    SioTxString MSComm1, Chr(ACK) 
                    Exit Do 
                Case Else: 
                    ShowNotes "非要求命令,请确认监控状态!!!" 
                    GoTo lb1 
            End Select 
             
            size% = SioRxData(MSComm1, sa, 2, 1000) 
            If size% < 0 Then 
                ShowNotes "读取包号超时,退出 !" 
                Exit Do 
            End If 
            If SioRxData(MSComm1, ss1, n1%, 2000) < 0 Then 
                ShowNotes "读包数据内容超时,退出" 
                Exit Do 
            End If 
            If SioRxData(MSComm1, sc, 2, 1000) < 0 Then 
                ShowNotes "未读到数据包的CRC校验字,退出" 
                Exit Do 
            End If 
            ShowRecvMsg sa(0) & ":" & sa(1) & ", " & sc(0) & ":" & sc(1):  Label3.Refresh 
             
            crc% = 0 
            For ik% = 0 To n1% - 1 
                crc% = UpdateCRC(crc%, ss1(ik%)) 
            Next ik% 
            IToC2 crc%, sd(0), sd(1) 
            ShowNotes "读数据包: " & j% 
            jj = j% Mod 256 
             
            If sa(0) = jj And sd(0) = sc(0) And sd(1) = sc(1) Then 
                Put #1, , ss1 
                Label2.Caption = " ACK= " & Chr(ACK) 
                SioTxString MSComm1, Chr(ACK) 
                If SioRxData(MSComm1, sb, 1, 10000) < 0 Then 
                    ShowNotes "未收到下一个命令符 !!!" 
                    GoTo lb1 
                End If 
                Exit For 
            Else 
                ShowNotes "CRC校验出错,请求重发":  Label2.Caption = " NAK= " & Chr(NAK) 
                SioTxString MSComm1, Chr(NAK) 
                If SioRxData(MSComm1, sb, 1, 10000) < 0 Then 
                    ShowNotes "未收到下一个命令符 !!!" 
                    GoTo lb1 
                End If 
            End If 
        Next i% 
        If i% >= 3 Then 
            ShowNotes "已试三次,退出" 
            GoTo lb1 
        End If 
        j% = j% + 1 
    Loop 
    ShowNotes "数据接收结束" 
lb1: 
    Close #1 
    MSComm1.InputMode = comInputModeText 
 
     
    s$ = "QT" & vbCr: Label2.Caption = s$ 
    SioTxString MSComm1, s$: 
    Sleep 500 '1000 
    HandleOff 
End Sub 
 
 
'定时查询 
Private Sub Timer1_Timer() 
    Dim nbuf% 
    Timer1.Enabled = 0 
    nbuf% = MSComm1.InBufferCount 
    Label2.Caption = "": Label3.Caption = "" 
    Label3.Caption = nbuf% 
    Label4.Caption = "等待站点信息 !  " & Format(Time, "hh:nn:ss") 
    If nbuf% > 6 Then 
        Beep 
        DelAA 
        RunAA 
        SetAA 
    End If 
    Timer1.Enabled = True 
End Sub 
 
 
 
'菜单选项: 修改密码 
Private Sub mnPswdChange_Click() 
    Dim s$, s1$, n% 
    fmPswdC.Show 1 
    n% = Len(fmPswdC.sPswd1) 
    If n% > 0 Then 
        s$ = "NP " & Format(n, "0") & fmPswdC.sPswd1 '& "," & fmpswd1.sPswd0 
        s1$ = RunCmd1(s$, "修改密码", 1000, 1000) 
        ShowNotes "修改密码:" & s1$ 
        If s1$ = "Ok" Then 
            MsgBox "修改密码成功!" 
        End If 
    End If 
End Sub 
 
'菜单选项: 实时监控 
Private Sub mnVw_Click() 
    Static ndata0 As Long 
    Dim kk1%, kk2%, r#, ich%, l As Long 
    Dim sb1() As Byte, ss1() As Byte, sa() As Byte, sb() As Byte, sc() As Byte, sd() As Byte 
    Dim i%, j%, n%, n1%, ik%, size%, s$, s1$ 
    Dim c, crc% 
    Dim jj As Byte 
    Dim size1%, size2%, size3% 
    Dim ndata11 As Long 
    Dim yyData() As Single 
     
     
    List1.Clear:    List1.Visible = False 
    Label1.Caption = "": Label2.Caption = "":   Label3.Caption = "": 
    Label4.Caption = "实时监视" 
    ndata0 = 0 
    nData = 0 
    Ts = 0.02 
    w.Init 3, nData, yData, Ts 
    w.SetColorFont RGB(64, 64, 64), RGB(192, 192, 192), RGB(192, 192, 192) 
    w.SetColorLine RGB(192, 192, 192), vbRed, vbMagenta 
    w.SetColorWaveCh 0, vbGreen 
    w.SetColorWaveCh 1, RGB(255, 255, 0) 
    w.SetColorWaveCh 2, RGB(127, 127, 255) 
    w.SetChannel 0, "Ch1:垂直" & "", vbGreen, sUnit 
    w.SetChannel 1, "Ch2:北南" & s$, vbGreen, sUnit 
    w.SetChannel 2, "Ch3:东西" & s$, vbGreen, sUnit 
    w.RunStep Picture1, yData, ndata0, nData 
     
    w.SetScaleY 1, 32#, Picture1, yData 
     
    With MSComm1 
        .InBufferCount = 0 
        .OutBufferCount = 0 
        .InputMode = comInputModeBinary 
    End With 
     
    sMenu = "SVw" 
    s$ = "VW" & vbCr: Label2.Caption = s$: Label2.Refresh: 
    SioTxString MSComm1, s$ 
    Sleep 1000 
     
    flgTest1 = 0 
    If flgTest1 = 1 Then 
        GoTo t1 
    End If 
    nData = 0 
    For i% = 0 To 15 
        Label2.Caption = " NAK = " & NAK 
        SioTxString MSComm1, Chr(NAK) 
        Sleep 1000 
        size% = SioRxData(MSComm1, sb, 1, 1000) 
        If size% > 0 Then 
            Exit For 
        End If 
        Label3.Caption = i% 
    Next i% 
     
    If i% >= 15 Then 
        Label4.Caption = "无响应,检查有无文件!!!": Label4.Refresh 
        GoTo lb1 
    End If 
t1: 
    j% = 1 
    Do 
'        For i% = 0 To 2         '三次 
         
If flgTest1 = 1 Then 
    ReDim ss1(200) 
    For kk1% = 0 To 60 
        ss1(kk1% + kk1%) = Cos(kk1% / 10 * 3.1415926) * 10 + 20 
        ss1(kk1% + kk1% + 1) = 128 
    Next kk1% 
    GoTo t2 
End If 
            c = sb(0) 
            Select Case c 
                Case SOH: n1% = 6: s$ = "小包" 
                Case EOT: 
                    ShowNotes "收到文件结束标志,发ACK" 
                    ShowSendMsg "ACK = " & ACK 
                    SioTxString MSComm1, Chr(ACK) 
                    Exit Do 
                Case Else: 
                    ShowNotes "非要求命令,请确认监控状态!!!" 
                    GoTo lb1 
            End Select 
'            size1% = SioRxData(MSComm1, sa, 2, 1000) 
'            If size1% < 0 Then 
'                ShowNotes "读取包号超时,退出 !" 
'                GoTo lb1 
'            End If 
            size2% = SioRxData(MSComm1, ss1, n1%, 1000) 
            If size2% < 0 Then 
                ShowNotes "读包数据内容超时,退出" 
                GoTo lb1 
            End If 
'            size3% = SioRxData(MSComm1, sc, 2, 1000) 
'            If size3% < 0 Then 
'                ShowNotes "未读到数据包的CRC校验字,退出" 
'                GoTo lb1 
'            End If 
'            ShowRecvMsg sa(0) & ":" & sa(1) & ", " & sc(0) & ":" & sc(1):  Label3.Refresh 
'            crc% = 0 
'            For ik% = 0 To n1% - 1 
'                crc% = UpdateCRC(crc%, ss1(ik%)) 
'            Next ik% 
'            IToC2 crc%, sd(0), sd(1) 
'            ShowNotes "读数据包: " & j% 
'            jj = j% Mod 256 
'            If 0 = 0 Then 'sa(0) = jj And sd(0) = sc(0) And sd(1) = sc(1) Then 
t2: 
                r# = 2500# / 32768 
                kk2% = 0 
'                ReDim Preserve yData(3, nData + 20) 
'                ReDim Preserve IRIG(nData + 20) 
                ReDim Preserve yData(3, nData + 1) 
                ReDim Preserve yyData(3, nData + 1) 
                ReDim Preserve IRIG(nData + 1) 
                 
                ndata11 = nData Mod 800 
                 
'                For kk1% = 0 To 19           '获取数据 
                    For ich% = 0 To 2 
                        l = ss1(kk2%) + 256& * ss1(kk2% + 1) 
                        yData(ich%, nData) = (l - 32768) * r#  'HfscdHead(ich%) 
                        yyData(ich%, ndata11) = yData(ich%, nData) 
                        kk2% = kk2% + 2 
                    Next ich% 
                    IRIG(0) = 1 
                    nData = nData + 1 
'                Next kk1% 
'If flgTest1 = 1 Then 
'    GoTo t5 
'End If 
                 
                Label2.Caption = " ACK= " & Chr(ACK) 
                SioTxString MSComm1, Chr(ACK) 
                If SioRxData(MSComm1, sb, 1, 4000) < 0 Then 
                    ShowNotes "未收到下一个命令符 !!!" 
                    GoTo lb1 
                End If 
't5: 
'                Exit For 
'            Else 
'                ShowNotes "CRC校验出错,请求重发":  Label2.Caption = " NAK= " & Chr(NAK) 
'                SioTxString MSComm1, Chr(NAK) 
'                If SioRxData(MSComm1, sb, 1, 4000) < 0 Then 
'                    ShowNotes "未收到下一个命令符 !!!" 
'                    GoTo lb1 
'                End If 
'            End If 
'        Next i% 
'        If i% >= 3 Then 
'            ShowNotes "已试三次,退出" 
'            GoTo lb1 
'        End If 
         
'        w.RunStep Picture1, yData, ndata0, nData 
        ndata0 = ndata0 Mod 800 
         
        If (nData Mod 20) = 0 Then 
            w.RunStep Picture1, yyData, ndata0, ndata11 
            w.Run Picture1, yyData 
        End If 
        ndata0 = nData 
        j% = j% + 1 
        DoEvents 
         
     Loop 
'    Loop Until nData >= 1500 
    ShowNotes "实时监视结束" 
    sMenu = "Wave" 
    w.RunStep Picture1, yData, ndata0, nData 
   w.Run Picture1, yData 
    GoTo lb2 
lb1: 
    ShowNotes "退出实时监视" 
lb2: 
'    sMenu = "Wave" 
'    w.Run Picture1, yData 
    MSComm1.InputMode = comInputModeText 
End Sub 
 
 
 
'***程序结束*********************************************************************************