📄 frmmain.frm
字号:
VERSION 5.00
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Begin VB.Form Form1
Caption = "7060数字输出控制"
ClientHeight = 4170
ClientLeft = 45
ClientTop = 210
ClientWidth = 6675
LinkTopic = "Form1"
ScaleHeight = 4170
ScaleWidth = 6675
StartUpPosition = 2 '屏幕中心
Begin VB.ComboBox cmbNO
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 405
Left = 1980
TabIndex = 10
Text = "Combo1"
Top = 405
Width = 1140
End
Begin VB.CommandButton cmdOpenCOM
Caption = "打开通信端口"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 600
Left = 4440
TabIndex = 4
Top = 315
Width = 1590
End
Begin VB.ComboBox cmbCOM
BeginProperty Font
Name = "Times New Roman"
Size = 12
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 405
Left = 450
TabIndex = 3
Text = "Combo1"
Top = 405
Width = 1140
End
Begin VB.CommandButton cmdEnd
Caption = "结束"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 600
Left = 4410
TabIndex = 0
Top = 2025
Width = 1590
End
Begin MSCommLib.MSComm MSComm1
Left = 135
Top = 1035
_ExtentX = 1005
_ExtentY = 1005
_Version = 393216
DTREnable = -1 'True
End
Begin VB.Label lblMsg
BackColor = &H00C0FFFF&
BorderStyle = 1 'Fixed Single
Caption = "Label2"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 420
Left = 315
TabIndex = 11
Top = 3645
Width = 5460
End
Begin VB.Label Label1
Caption = "站号"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 330
Index = 6
Left = 2025
TabIndex = 9
Top = 90
Width = 780
End
Begin VB.Label Label1
AutoSize = -1 'True
Caption = "RL4"
BeginProperty Font
Name = "Tahoma"
Size = 12
Charset = 136
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 240
Index = 5
Left = 3375
TabIndex = 8
Top = 1665
Width = 465
End
Begin VB.Label Label1
AutoSize = -1 'True
Caption = "RL3"
BeginProperty Font
Name = "Tahoma"
Size = 12
Charset = 136
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 240
Index = 4
Left = 2475
TabIndex = 7
Top = 1665
Width = 465
End
Begin VB.Label Label1
AutoSize = -1 'True
Caption = "RL2"
BeginProperty Font
Name = "Tahoma"
Size = 12
Charset = 136
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 240
Index = 3
Left = 1575
TabIndex = 6
Top = 1665
Width = 465
End
Begin VB.Label Label1
AutoSize = -1 'True
Caption = "RL1"
BeginProperty Font
Name = "Tahoma"
Size = 12
Charset = 136
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 240
Index = 2
Left = 675
TabIndex = 5
Top = 1665
Width = 465
End
Begin VB.Image imgOut
Height = 1095
Index = 3
Left = 3285
Stretch = -1 'True
Top = 1935
Width = 690
End
Begin VB.Image imgOut
Height = 1095
Index = 2
Left = 2385
Stretch = -1 'True
Top = 1935
Width = 690
End
Begin VB.Image imgOut
Height = 1095
Index = 1
Left = 1485
Stretch = -1 'True
Top = 1935
Width = 690
End
Begin VB.Image imgOut
Height = 1095
Index = 0
Left = 495
Stretch = -1 'True
Top = 1935
Width = 690
End
Begin VB.Image imgOFF
Height = 735
Left = 3420
Picture = "frmMain.frx":0000
Stretch = -1 'True
Top = 0
Visible = 0 'False
Width = 780
End
Begin VB.Image imgON
Height = 735
Left = 3465
Picture = "frmMain.frx":2946
Stretch = -1 'True
Top = 855
Visible = 0 'False
Width = 780
End
Begin VB.Label Label1
AutoSize = -1 'True
Caption = "数字输出控制"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 240
Index = 1
Left = 1560
TabIndex = 2
Top = 1395
Width = 1440
End
Begin VB.Label Label1
Caption = "通信端口"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 330
Index = 0
Left = 450
TabIndex = 1
Top = 135
Width = 1125
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
'声明记录四个数字输出状态的数组变量
Dim RelayStatus(1 To 4) As Boolean
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'当选择通信端口的Combo控件被选中后触发此事件
'若用户改变通信端口时,关闭通信端口
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub cmbCOM_Click()
'若通信端口号码和现在的选择一样时就不处理,直接跳出此子程序
If cmbCOM.ListIndex + 1 = MSComm1.CommPort Then Exit Sub
MSComm1.PortOpen = False '关闭通信端口
lblMsg.Caption = "已停止检测并关闭通信端口"
cmdOpenCOM.Enabled = True '允许使用【打开通信端口】按钮
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'单击【结束】按钮后触发此事件
'使用End命令将系统结束
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub cmdEnd_Click()
End
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'单击【打开通信端口】按钮后触发此事件
'将MSComm控件的参数设置好,并打开
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub cmdOpenCOM_Click()
'校验是否开关通信端口
If cmdOpenCOM.Caption = "关闭通信端口" Then
MSComm1.PortOpen = False
cmdOpenCOM.Caption = "打开通信端口"
Exit Sub
End If
'判断端口号码是否落在1--16之间
If cmbCOM.ListIndex >= 0 And cmbCOM.ListIndex <= 16 Then
MSComm1.CommPort = cmbCOM.ListIndex + 1
Else
MsgBox "指定通信端口时发生错误!", vbCritical + vbOKOnly, "系统信息"
Exit Sub
End If
'触发错误检测机制
On Error GoTo comErr
MSComm1.Settings = "9600,n,8,1" '设置通信参数
MSComm1.PortOpen = True '打开通信端口
cmdOpenCOM.Caption = "关闭通信端口"
lblMsg.Caption = "可按下ON-OFF开关,执行继电器的控制工作。"
Exit Sub
comErr:
MsgBox "打开通信端口时发生错误!请确定通信端口存在且正常。", vbCritical + vbOKOnly, "系统信息"
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'窗体的Load事件
'输入图形暂时设为灰色,表示无状态信息进入
'将通信端口号码及站号输入Combo控件;并默认两者的选项是第一个
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Form_Load()
Dim i%
For i = 0 To 3
imgOut(i).Picture = imgOFF.Picture
Next i
cmbNO.Clear
For i = 1 To 255
cmbNO.AddItem CStr(Hex(i))
Next i
cmbNO.ListIndex = 0
cmbCOM.Clear
cmbCOM.AddItem "COM1"
cmbCOM.AddItem "COM2"
cmbCOM.ListIndex = 0
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'当代表数字输出的Image控件被选中时触发此事件
'将被选中的继电器作转态
'转态后将数字输出的决定送至模块执行
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub imgOut_Click(Index As Integer)
Dim Buf$, RLOut%, i%
'将记录转态,并改变ON.OFF按钮的显示
RelayStatus(Index + 1) = Not RelayStatus(Index + 1)
If RelayStatus(Index + 1) Then
imgOut(Index).Picture = imgON.Picture
Else
imgOut(Index).Picture = imgOFF.Picture
End If
'计算输出值
RLOut = 0
For i = 1 To 4
If RelayStatus(i) Then RLOut = RLOut + 2 ^ (i - 1)
Next i
'若通信端口尚未打开,不可发送数据
If cmdOpenCOM.Caption = "打开通信端口" Then Exit Sub
Buf = cmbNO.List(cmbNO.ListIndex)
'若只有一位数,则在此位数的前端加上一个0
If Len(Buf) = 1 Then
Buf = "0" & Buf
End If
MSComm1.Output = "#" & Buf & "000" & Hex(RLOut) & Chr(13) '组合完整的命令字符串
'等到cr的字符返回
Buf = WaitRS(MSComm1, vbCr, 2000)
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -