📄 comm.frm
字号:
VERSION 5.00
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Begin VB.Form Form1
Caption = "串口通信"
ClientHeight = 5970
ClientLeft = 60
ClientTop = 345
ClientWidth = 9195
LinkTopic = "Form1"
ScaleHeight = 5970
ScaleWidth = 9195
StartUpPosition = 3 '窗口缺省
Begin VB.CommandButton Command4
Caption = "文件保存"
Height = 495
Left = 7680
TabIndex = 5
Top = 2760
Width = 1095
End
Begin VB.CommandButton Command3
Caption = "画图"
Height = 495
Left = 7680
TabIndex = 4
Top = 1920
Width = 1215
End
Begin VB.PictureBox Picture1
Height = 3015
Left = 240
ScaleHeight = 2955
ScaleWidth = 6555
TabIndex = 3
Top = 2760
Width = 6615
End
Begin VB.CommandButton Command2
Caption = "关闭"
Height = 495
Left = 7680
TabIndex = 2
Top = 3600
Width = 1095
End
Begin VB.CommandButton Command1
Caption = "开始"
Height = 495
Left = 7680
TabIndex = 1
Top = 1080
Width = 1095
End
Begin VB.TextBox Text1
Height = 2535
Left = 120
TabIndex = 0
Top = 120
Width = 6735
End
Begin MSCommLib.MSComm MSComm1
Left = 2160
Top = 1920
_ExtentX = 1005
_ExtentY = 1005
_Version = 393216
DTREnable = -1 'True
RThreshold = 1
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim Datalength As Integer '数据长度
Dim Flag As Integer '标志
Dim Data() As Single '存放数据
Dim Datanum As Integer '数据编号
Private Sub Command1_Click()
'Dim number As Integer '定义要发送的数据
'Dim outbyte(0) As Byte '定义发送字节数组
'number = Val(Text1.Text) '类型转换
'outbyte(0) = CByte(number) '转换为二进制
'MSComm1.OutBufferCount = 0 '清空发送缓冲区
'MSComm1.Output = outbyte '发送数据
If MSComm1.PortOpen = False Then
MSComm1.CommPort = 1 '使用com1口
MSComm1.Settings = "9600,N,8,1"
'设置初始化参数
MSComm1.PortOpen = True '打开串口
MSComm1.RThreshold = 1 '有1个字符时触发
MSComm1.InputMode = 1 '二进制形式数据
End If
'初始化变量
Flag = 0
Datalength = 0
Datanum = 1
End Sub
Private Sub Command2_Click()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
Unload Form1
End Sub
Private Sub Command3_Click()
dx = 100 '画图的初始坐标
dy = 200
sx = 100 '画图的比例
sy = 100
If (Datanum < Datalength) Then
MsgBox "文件没有接受完毕"
Else
For i = 1 To datalegth - 1
Picture1.Line (dx + i * sx, dy - Data(i) * sy)-(dx + (i + 1) * sx, dy - Data(i + 1) * sy)
Next
Picture1.Refresh
End If
End Sub
Private Sub Command4_Click()
If (Datanum < Datalength) Then
MsgBox "文件没有接受完毕"
Else
Open "data1.dat" For Output As #1
For i = 1 To datalegth
Print #1, Data(i)
Next
Close #1
End If
End Sub
Private Sub MSComm1_OnComm()
Dim indata As Variant '定义变体变量
Dim arr(0) As Byte '定义接收字节数组
Dim ll As Integer
Dim lr As String
Select Case MSComm1.CommEvent
Case comEvReceive '触发接收事件
ll = MSComm1.InBufferCount '接受的数字的个数
indata = MSComm1.Input '接收数据
MSComm1.InBufferCount = 0 '清空接收缓冲区
If Flag = 0 Then '得到文件长度
arr(0) = AscB(indata) '类型转换
lr = Chr(arr(0))
Datalength = Val(Chr(arr(0))) '显示接收数据
Flag = 1
Else '得到文件数据
ReDim Preserve Data(Datalength)
If Datanum < Datalength Then '如果没有读完
arr(0) = AscB(indata) '类型转换
Data(Datanum) = Val(arr(0))
Text1.Text = Text1.Text + Chr(arr(0)) '显示接收数据
Datanum = Datanum + 1
Else
MsgBox "数据读取完毕"
End If
End If
End Select
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -