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

📄 form1.frm

📁 用VB实现串口通信
💻 FRM
字号:
VERSION 5.00
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Begin VB.Form Form1 
   Caption         =   "Form1"
   ClientHeight    =   3090
   ClientLeft      =   60
   ClientTop       =   450
   ClientWidth     =   4680
   LinkTopic       =   "Form1"
   ScaleHeight     =   3090
   ScaleWidth      =   4680
   StartUpPosition =   3  '窗口缺省
   Begin VB.CommandButton Hold_D 
      BackColor       =   &H00FF0000&
      Caption         =   "不读数"
      Height          =   375
      Left            =   3480
      MaskColor       =   &H80000002&
      TabIndex        =   7
      Top             =   1680
      Width           =   975
   End
   Begin VB.CommandButton CmdEXIT 
      Caption         =   "退出"
      Height          =   375
      Left            =   3480
      TabIndex        =   4
      Top             =   2280
      Width           =   975
   End
   Begin VB.CommandButton CmdCLR 
      Caption         =   "清空"
      Height          =   375
      Left            =   3480
      TabIndex        =   3
      Top             =   1080
      Width           =   975
   End
   Begin VB.TextBox TxtRECV 
      Height          =   495
      Left            =   360
      TabIndex        =   2
      Top             =   1560
      Width           =   2655
   End
   Begin VB.CommandButton CmdSEND 
      Caption         =   "发送"
      Height          =   375
      Left            =   3480
      TabIndex        =   1
      Top             =   480
      Width           =   975
   End
   Begin MSCommLib.MSComm MSComm1 
      Left            =   120
      Top             =   2400
      _ExtentX        =   1005
      _ExtentY        =   1005
      _Version        =   393216
      DTREnable       =   -1  'True
   End
   Begin VB.TextBox TxtSEND 
      Height          =   495
      Left            =   360
      TabIndex        =   0
      Top             =   480
      Width           =   2655
   End
   Begin VB.Label Label2 
      Caption         =   "接收区显示"
      Height          =   375
      Left            =   360
      TabIndex        =   6
      Top             =   1200
      Width           =   1215
   End
   Begin VB.Label Label1 
      Caption         =   "发送区显示"
      Height          =   255
      Left            =   360
      TabIndex        =   5
      Top             =   120
      Width           =   1455
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'程序描述:
'      (1)把发送窗口中的数据从COM1发送出去
'      (2)把接收到的数据显示在接收窗口中
'-------------------------------------------------------
Option Explicit                '检查未经声明的变量
Dim Com_Flag As Integer        '串口状态标志位Flag=0表示打开
Dim SendData() As Byte         '发送数据数组
Dim RecvData() As Byte         '接收数据数组

Private Sub CmdSEND_Click()
 Dim i As Integer
   
   If TxtSEND.Text = "" Then
     TxtRECV.Text = ""
     GoTo CmdSEND_Click_Exit
  End If
  ReDim SendData(Len(TxtSEND.Text) - 1)
  For i = 0 To Len(TxtSEND.Text) - 1
     SendData(i) = Asc(Mid$(TxtSEND.Text, i + 1, 1))
  Next i
  If MSComm1.PortOpen = False Then MSComm1.PortOpen = True
  MSComm1.Output = SendData
  If Com_Flag = 1 Then MSComm1.PortOpen = False
  TxtSEND.Text = ""  '清空发送区
CmdSEND_Click_Exit:
End Sub
Private Sub Form_Load()
   '串行口初始化
   Call SCIinit(MSComm1, 2, "9600,N,8,1")
   '清空有关文本框
   TxtSEND.Text = ""
   TxtRECV.Text = ""
   '开放串行中断
   MSComm1.RThreshold = 1    '开放串行中断
   Com_Flag = 0 '串口打开标志位
End Sub

Private Sub Hold_D_Click()
If MSComm1.PortOpen = True Then
   MSComm1.PortOpen = False
   Hold_D.Caption = "读数"
   Com_Flag = 1
Else
   MSComm1.PortOpen = True
   Hold_D.Caption = "不读数"
   MSComm1.InBufferCount = 0
   Com_Flag = 0
   End If
End Sub

Public Sub MSComm1_OnComm()   '串行接收中断
  Dim i As Integer
  Dim Stemp As String
  Static S1 As String
'  Dim S1 As String
 ' Dim S2 As String
  If Len(Trim(TxtRECV.Text)) = 0 Then S1 = ""
  
  MSComm1.RThreshold = 0      '关闭串行中断
 ' TxtRECV.Text = ""
  RecvData = MSComm1.Input
  For i = LBound(RecvData) To UBound(RecvData)
    If (RecvData(i) >= 127 Or RecvData(i) = 0) Then
        Stemp = Chr$(1)
   Else
        Stemp = Trim(Chr$(RecvData(i)))
    End If
     S1 = S1 & Stemp 'Trim(Chr$(RecvData(i)))
  ' S1 = S1 & Hex$(RecvData(i)) ' & "       "
  '  S2 = S2 & S1
   Next i
     TxtRECV.Text = S1
     For i = LBound(RecvData) To UBound(RecvData)
     If RecvData(i) = 13 Then S1 = ""
     Next i
    MSComm1.RThreshold = 1      '开放串行中断
End Sub
 
Private Sub CmdCLR_Click()    '单击"清空"按钮
  TxtSEND.Text = ""
  TxtRECV.Text = ""
End Sub
 
Private Sub CmdEXIT_Click()    '单击"退出"按钮
   If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
   End
End Sub


⌨️ 快捷键说明

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