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

📄 frmcheck.frm

📁 用VB编写的用于控制步进电机工作的上位机软件。
💻 FRM
字号:
VERSION 5.00
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Begin VB.Form frmCheck 
   Caption         =   "串口检测"
   ClientHeight    =   4740
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   4710
   LinkTopic       =   "Form1"
   ScaleHeight     =   4740
   ScaleWidth      =   4710
   StartUpPosition =   3  '窗口缺省
   Begin VB.Timer tmrTimer2 
      Left            =   3960
      Top             =   3120
   End
   Begin VB.Timer tmrTimer1 
      Left            =   3960
      Top             =   2400
   End
   Begin VB.Frame Frame3 
      Height          =   1215
      Left            =   720
      TabIndex        =   9
      Top             =   2280
      Width           =   2775
      Begin VB.Label Label4 
         Caption         =   "0"
         Height          =   255
         Left            =   1200
         TabIndex        =   13
         Top             =   840
         Width           =   975
      End
      Begin VB.Label Label3 
         Caption         =   "0"
         Height          =   255
         Left            =   1200
         TabIndex        =   12
         Top             =   360
         Width           =   975
      End
      Begin VB.Label Label2 
         AutoSize        =   -1  'True
         Caption         =   "接收次数:"
         Height          =   180
         Left            =   240
         TabIndex        =   11
         Top             =   840
         Width           =   900
      End
      Begin VB.Label Label1 
         AutoSize        =   -1  'True
         Caption         =   "发送次数:"
         Height          =   180
         Left            =   240
         TabIndex        =   10
         Top             =   360
         Width           =   900
      End
   End
   Begin VB.Frame Frame2 
      Caption         =   "波特率选择"
      Height          =   1695
      Left            =   2520
      TabIndex        =   5
      Top             =   360
      Width           =   1215
      Begin VB.OptionButton Boud3 
         Caption         =   "1200"
         Height          =   255
         Left            =   240
         TabIndex        =   8
         Top             =   1080
         Width           =   735
      End
      Begin VB.OptionButton Boud2 
         Caption         =   "4800"
         Height          =   255
         Left            =   240
         TabIndex        =   7
         Top             =   720
         Width           =   735
      End
      Begin VB.OptionButton Boud1 
         Caption         =   "9600"
         Height          =   255
         Left            =   240
         TabIndex        =   6
         Top             =   360
         Width           =   735
      End
   End
   Begin MSCommLib.MSComm MSComm1 
      Left            =   3960
      Top             =   600
      _ExtentX        =   1005
      _ExtentY        =   1005
      _Version        =   393216
      DTREnable       =   -1  'True
      RThreshold      =   1
   End
   Begin VB.Frame Frame1 
      Caption         =   "端口选择"
      Height          =   1695
      Left            =   480
      TabIndex        =   2
      Top             =   360
      Width           =   1215
      Begin VB.OptionButton COM2 
         Caption         =   "COM2"
         Height          =   375
         Left            =   240
         TabIndex        =   4
         Top             =   960
         Width           =   735
      End
      Begin VB.OptionButton COM1 
         Caption         =   "COM1"
         Height          =   255
         Left            =   240
         TabIndex        =   3
         Top             =   480
         Width           =   735
      End
   End
   Begin VB.CommandButton cmdReturn 
      Caption         =   "返   回"
      Height          =   615
      Left            =   2520
      TabIndex        =   1
      Top             =   3840
      Width           =   1335
   End
   Begin VB.CommandButton cmdStart 
      Caption         =   "开始测试"
      Height          =   615
      Left            =   480
      TabIndex        =   0
      Top             =   3840
      Width           =   1335
   End
End
Attribute VB_Name = "frmCheck"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
   Dim OK, Start As Boolean    'OK 为通信正常标志位, Start 为开始测试标志位

Private Sub Boud1_Click()
   sBoud = "9600,n,8,1"
   MSComm1.Settings = sBoud
End Sub

Private Sub Boud2_Click()
   sBoud = "4800,n,8,1"
   MSComm1.Settings = sBoud
End Sub

Private Sub Boud3_Click()
   sBoud = "1200,n,8,1"
   MSComm1.Settings = sBoud
End Sub

Private Sub cmdReturn_Click()
   If Start Then          '判断是否已经按下测试键
      Start = False       '若已经按下则执行停止键的功能,测试键标志清零
      cmdStart.Enabled = True        '激活测试键按钮
      cmdReturn.Caption = "返   回"  '停止标签改回返回
   Else
      If MSComm1.PortOpen Then MSComm1.PortOpen = False  '若没有按下测试键,则执行返回键功能
      frmCheck.Hide     '隐藏串口检测窗口
      frmMain.Show      '显示主窗口
   End If
End Sub

Private Sub cmdStart_Click()
   Label3.Caption = 0    '发送次数清零
   Label4.Caption = 0    '接收次数清零
   If MSComm1.PortOpen Then
      MsgBox sCom + "正在被其它程序使用,请更换其它串口", 0, "串行通信"  '???????
   Else
      OK = True       '通信正常标志位置 1
      Start = True    '测试键标志置 1
      cmdReturn.Caption = "停   止"    '返回键按钮标签改为停止
      cmdStart.Enabled = False         '测试键按钮无效
      MSComm1.PortOpen = True          '打开端口
      
      MSComm1.Output = "1"             '发送测试串口指令 1
      tmrTimer2.Interval = 100         '设置定时器2 的定时间隔为100ms
      tmrTimer2.Enabled = True         '开定时器2
      While Not OK
      Wend                             '等待定时器2 定时结束
      tmrTimer2.Interval = 1000        '设置定时器2 的定时间隔为1000ms
      OK = True                        '标志置 1
      tmrTimer1.Enabled = True         '开定时器1
   End If
End Sub

Private Sub COM1_Click()
   MSComm1.CommPort = 1
   sPort = 1
   sCom = "COM1"
End Sub

Private Sub COM2_Click()
   MSComm1.CommPort = 2
   sPort = 2
   sCom = "COM2"
End Sub

Private Sub Form_Load()
   Dim buf$               '用于暂存接收字符
   Dim Time%
   
   OK = True
   Start = False
      
   Label3.Caption = 0    '发送次数清零
   Label4.Caption = 0    '接收次数清零
   
   tmrTimer1.Interval = 10      '计时器1定时10ms
   tmrTimer1.Enabled = False    '关计时器1
   tmrTimer2.Interval = 1000    '计时器2定时1000ms
   tmrTimer2.Enabled = False    '关计时器2

   COM1.Value = True     '默认使用 COM1口
   Boud3.Value = True    '默认使用 1200波特
   sCom = "COM1"         '串口变量指向 COM1
   
   MSComm1.CommPort = sPort             '使用 COM1
   MSComm1.Settings = sBoud             '使用 1200波特,无校验,8位数据位,1位停止位
   MSComm1.InputLen = 0                 '读取接收缓冲区的全部字符
   MSComm1.InputMode = comInputModeText 'Input读取的数据是文本
      
End Sub

Private Sub tmrTimer1_Timer()
   tmrTimer1.Enabled = False    '关定时器1
   MSComm1.Output = "A"         '发送测试字符'A'
   Label3.Caption = Label3.Caption + 1   '发送次数自加 1
   Do
   tmrTimer2.Enabled = True     '开定时器2
   DoEvents                     '接受其它事件的响应,主要是定时器2 的响应
   Loop While ((MSComm1.InBufferCount = 0) And OK)  '若接收到数据或定时器2响应则跳出循环,若定时器2响应则说明串口不通
   tmrTimer2.Enabled = False    '关定时器2
   
   If MSComm1.Input = "A" Then
      Label4.Caption = Label4.Caption + 1   '若接收到的字符是"A",则通信正常,接收次数自加 1
   Else
      OK = False        '若接收到的字符不是"A",则通信不正常,可能是波特率不匹配,清标志位
   End If
   
   If Not OK Then
      MsgBox sCom + "是否连接?" + Chr(32) + "波特率是否正确?", 0, "串行通信"  '若通信不正常,则显示提示框
      Start = False                   '测试标志位清零
      cmdStart.Enabled = True         '显示测试键按钮
      cmdReturn.Caption = "返   回"   '停止标签改为返回
      If MSComm1.PortOpen Then MSComm1.PortOpen = False   '如果串口被打开则关闭
      GoTo ToEnd1           '跳过开定时器1 的操作
   End If
      
   If (Label4.Caption >= 100) Or (Not Start) Then
      MsgBox sCom + "工作正常!", 0, "串行通信"    '若已经测试了100次(或按下停止键按钮),则显示通信成功提示框
      
      MSComm1.Output = "B"        '发送测试终止指令 "B"
      
      cmdStart.Enabled = True        '激活测试键按钮
      Start = False                  '清测试标志位
      cmdReturn.Caption = "返   回"  '停止标签改为返回
      
      If MSComm1.PortOpen Then MSComm1.PortOpen = False   '如果串口被打开则关闭
      GoTo ToEnd1          '跳过开定时器1 的操作
   End If
   tmrTimer1.Enabled = True   '开定时器1
ToEnd1:
End Sub

Private Sub tmrTimer2_Timer()
   tmrTimer2.Enabled = False
   OK = False
End Sub

⌨️ 快捷键说明

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