Form1.frm
上传用户:machunbo88
上传日期:2022-07-03
资源大小:8k
文件大小:4k
源码类别:

串口编程

开发平台:

Visual Basic

  1. VERSION 5.00
  2. Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
  3. Begin VB.Form Form1 
  4.    Caption         =   "串口通讯"
  5.    ClientHeight    =   3345
  6.    ClientLeft      =   60
  7.    ClientTop       =   345
  8.    ClientWidth     =   4680
  9.    Icon            =   "Form1.frx":0000
  10.    LinkTopic       =   "Form1"
  11.    ScaleHeight     =   3345
  12.    ScaleWidth      =   4680
  13.    StartUpPosition =   2  'CenterScreen
  14.    Begin VB.TextBox Text2 
  15.       Height          =   2400
  16.       Left            =   660
  17.       MultiLine       =   -1  'True
  18.       ScrollBars      =   2  'Vertical
  19.       TabIndex        =   2
  20.       Top             =   195
  21.       Width           =   3360
  22.    End
  23.    Begin VB.TextBox Text1 
  24.       Height          =   375
  25.       Left            =   675
  26.       TabIndex        =   1
  27.       Top             =   2820
  28.       Width           =   2280
  29.    End
  30.    Begin VB.CommandButton Command1 
  31.       Caption         =   "发送"
  32.       Height          =   375
  33.       Left            =   3030
  34.       TabIndex        =   0
  35.       Top             =   2820
  36.       Width           =   975
  37.    End
  38.    Begin MSCommLib.MSComm MSComm1 
  39.       Left            =   0
  40.       Top             =   225
  41.       _ExtentX        =   1005
  42.       _ExtentY        =   1005
  43.       _Version        =   393216
  44.       DTREnable       =   -1  'True
  45.    End
  46. End
  47. Attribute VB_Name = "Form1"
  48. Attribute VB_GlobalNameSpace = False
  49. Attribute VB_Creatable = False
  50. Attribute VB_PredeclaredId = True
  51. Attribute VB_Exposed = False
  52. Dim mSend As String
  53. Private Sub Command1_Click()
  54.     MSComm1.Output = Text1.Text
  55. End Sub
  56. Private Sub Form_Load()
  57.     mSend = "120102"
  58.     Call ComPortOpen
  59. End Sub
  60. Private Sub MSComm1_OnComm()
  61.     Dim nReceive As Long
  62.     Dim bb() As Byte
  63.     Dim sSend As String
  64.     Dim nCheck As Integer
  65.     
  66.     With MSComm1
  67.         Select Case .CommEvent
  68.             '判断MSComm1通信事件
  69.             Case comEvReceive
  70.                 bb = MSComm1.Input
  71.                 nReceive = bb(0)
  72.                 Select Case nReceive
  73.                     Case 1
  74.                         'msend
  75.                     Case 2
  76.                         mSend = Right("000" & (Val(Left(mSend, 3)) + 1), 3) & Right(mSend, 3)
  77.                 End Select
  78.                 For i = 1 To 6
  79.                     'check = Int(num / 10 ^ n) + check
  80.                     nCheck = nCheck + Val(Mid(mSend, i, 1))
  81.                 Next i
  82.                 sSend = mSend & Right(nCheck, 1)
  83.                 .Output = sSend
  84.                 Text2.Text = Text2.Text & "接收:" & nReceive & "自动回送:" & sSend & vbCrLf
  85.         End Select
  86.     End With
  87. End Sub
  88. Public Sub ComPortOpen() '开串口
  89.     With MSComm1
  90.         .CommPort = 1 '使用COM1
  91.         .Settings = "9600,N,8,1" '设置通信口参数
  92.         .InBufferSize = 1024
  93.         '设置MSComm1接收缓冲区为1024字节
  94.         .OutBufferSize = 512
  95.         '设置MSComm1发送缓冲区为4122字节
  96.         .InputMode = comInputModeBinary 'comInputModeText ' =
  97.         '设置接收数据模式为二进制形式
  98.         .InputLen = 0
  99.         '设置Input 一次从接收缓冲读取字节数为1
  100.         .SThreshold = 1
  101.         '设置Output 一次从发送缓冲读取字节数为1
  102.         .InBufferCount = 0 '清除接收缓冲区
  103.         .OutBufferCount = 0 '清除发送缓冲区
  104.         .RThreshold = 1
  105.         On Error Resume Next
  106.         '设置接收一个字节产生OnComm事件
  107.         If .PortOpen = False Then
  108.             '判断通信口是否打开
  109.             .PortOpen = True '打开通信口
  110.             If Err Then '错误处理
  111.                 msg = MsgBox(" 串口 COM1 无效! ", vbOKOnly, "警告")
  112.                 Exit Sub
  113.             End If
  114.         End If
  115.     End With
  116.     'MsgBox "端口已打开"
  117. End Sub