📄 form1.frm
字号:
VERSION 5.00
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 4965
ClientLeft = 60
ClientTop = 345
ClientWidth = 7215
LinkTopic = "Form1"
ScaleHeight = 4965
ScaleWidth = 7215
StartUpPosition = 3 '窗口缺省
Begin VB.CommandButton NonPeriodic_Command
Caption = "Command1"
Height = 495
Left = 720
TabIndex = 0
Top = 960
Width = 1815
End
Begin VB.Timer NonPeriodic
Left = 2880
Top = 3720
End
Begin VB.Timer Periodic
Left = 2160
Top = 3720
End
Begin MSCommLib.MSComm MSComm1
Left = 5520
Top = 3720
_ExtentX = 1005
_ExtentY = 1005
_Version = 393216
DTREnable = -1 'True
End
Begin VB.Label Label1
Caption = "Label1"
Height = 735
Left = 3120
TabIndex = 1
Top = 1800
Width = 3735
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub Form_Load()
MSComm1.CommPort = 2 '选用COM2串行口
MSComm1.Settings = "115200,N8,1" '波特率9600,无奇偶校验位,8位数据位1位停止位
MSComm1.InputLen = 0 'Input将读取接收缓冲区的全部内容
MSComm1.InBufferSize = 1024 '设置接收缓冲区的字节长度
MSComm1.InputMode = comInputModeBinary
MSComm1.RThreshold = 1
MSComm1.SThreshold = 0
MSComm1.PortOpen = True '打开通信口
MSComm1.InBufferCount = 0 '清除发送缓冲区数据
MSComm1.OutBufferCount = 0 '清除接收缓冲区数据
Periodic.Interval = 1000 '设置ls定时间隔,使遥测命令每隔ls发送1次
NonPeriodic.Interval = 500 '设置0.5s定时间隔,查询命令按钮是否处于激活状态以确定是否发送周期性命令
Periodic.Enabled = False
NonPeriodic.Enabled = False
Command_Pressed = False '命令按钮为未激活状态
During_Periodic = False '周期性命令数据传输尚未开始
During_NonPeriodic = False '非周期性命令数据传输尚未开始
End Sub
Private Sub MSComm1_OnComm()
Dim ab(4) As Byte '字节数据类型数组,用来存储接收到的一组字节数据
Dim ss As String
Dim av As Variant '来从接收缓冲区读取数据
Dim i As Integer
Dim j As Integer
Dim w As Integer '接收数据个数计数器
Dim b1 As Single
Dim b2 As Single
Dim WW As Single '十进制检测值
Dim MaxW As Single '最大值
Dim MinW As Single '最小值
av = MSComm1.Input
ab(1) = av(0)
ss = Chr(ab(1))
If Len(Label1.Caption) > 20 Then
Label1.Caption = ss
Else
Label1.Caption = Label1.Caption + ss
End If
End Sub
Private Sub NonPeriodic_Command_Click()
' Command_Pressed = True '命令按钮激活
'MSComm1.InputMode = comInputModeBinary
Dim Sendtemp(0) As Byte
'Const SendCmd = &H41
Sendtemp(0) = &H41
'MSComm1.Output = Sendtemp()
' MSComm1.Output = Chr(151)
If Len(Label1.Caption) > 20 Then
Label1.Caption = Chr(Sendtemp(0))
Else
Label1.Caption = Label1.Caption + Chr(Sendtemp(0))
End If
End Sub
Private Sub NonPeriodic_Timer()
If During_Periodic = True Or Command_Pressed = False Then Exit Sub '若周期性命令数据传输尚未结束或命令按钮处于激活状态,则退出发送非周期性命令程序。
Command_Pressed = False '命令按钮恢复为未激活状态
'Call SendData(NonPeriodic_Command) '发送非周期性命令
MSComm1.RThreshold = R_NONPERIODIC_BYTE '发送非周期性命令后,设置Rthreshold属性,使主站接收所设定的字节数后引发OnComm事件
End Sub
Private Sub Periodic_Timer()
Dim Sendtemp(0) As Byte
Const SendCmd = &H42
Sendtemp(0) = SendCmd
MSComm1.Output = Sendtemp()
' If During_NonPeriodic = True Then Exit Sub '若非周期性命令数据传输尚未结束,则退出发送非周期性命令程序。
' During_Periodic = True '设置周期性命令数据传输状态为正在进行中
'Call SendData(Periodic_Command) '发送周期性命令
' MSComm1.RThreshold = R_PERIODIC_BYTE '发送周期性命令后,主站接收R-REMOT- EDATA-BYTE个字节,可引发OnComm 事件
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -