📄 frmmain.frm
字号:
VERSION 5.00
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Begin VB.Form FrmMain
Caption = "智能照明控制系统"
ClientHeight = 8865
ClientLeft = 60
ClientTop = 450
ClientWidth = 10935
LinkTopic = "Form1"
ScaleHeight = 8865
ScaleWidth = 10935
StartUpPosition = 3 '窗口缺省
Begin VB.CommandButton CmdRefresh
Caption = "刷新"
Height = 495
Left = 9120
TabIndex = 8
Top = 480
Width = 1335
End
Begin VB.CommandButton CmdScan
Caption = "初始化"
Height = 495
Left = 9120
TabIndex = 7
Top = 1320
Width = 1335
End
Begin VB.OptionButton OptManualDisable
Caption = "自动"
Height = 495
Left = 9240
TabIndex = 6
Top = 5760
Width = 855
End
Begin VB.OptionButton OptManualEnable
Caption = "手动"
Height = 495
Left = 9240
TabIndex = 5
Top = 5160
Width = 855
End
Begin VB.Frame Frame1
Caption = "控制模式"
Height = 1455
Left = 9120
TabIndex = 4
Top = 4920
Width = 1455
End
Begin VB.CommandButton CmdAdjTimer
Caption = "时钟同步"
Height = 495
Left = 9120
TabIndex = 3
Top = 2160
Width = 1335
End
Begin VB.CommandButton CmdTimer
Caption = "定时"
Height = 495
Left = 9120
TabIndex = 2
Top = 3840
Width = 1335
End
Begin VB.CommandButton CmdLight
Caption = "灯光控制"
Height = 495
Left = 9120
TabIndex = 1
Top = 3000
Width = 1335
End
Begin MSCommLib.MSComm MSComm
Left = 10080
Top = 120
_ExtentX = 1005
_ExtentY = 1005
_Version = 393216
DTREnable = -1 'True
End
Begin MSComctlLib.TreeView TView
Height = 7695
Left = 480
TabIndex = 0
Top = 480
Width = 8175
_ExtentX = 14420
_ExtentY = 13573
_Version = 393217
HideSelection = 0 'False
LineStyle = 1
Sorted = -1 'True
Style = 6
Checkboxes = -1 'True
Appearance = 1
BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851}
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
End
End
Attribute VB_Name = "FrmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Private Sub Form_Load()
Load FrmComPort
FrmComPort.Visible = True
FrmComPort.Show
While FrmComPort.Visible = True
DoEvents
Sleep 50
Wend
MSComm.CommPort = FrmComPort.ComPort
MSComm.RThreshold = 0
MSComm.SThreshold = 0
MSComm.DTREnable = False
MSComm.EOFEnable = False
MSComm.RTSEnable = False
MSComm.InBufferCount = 0
MSComm.OutBufferCount = 0
MSComm.NullDiscard = False
MSComm.Settings = "9600,n,8,1"
MSComm.PortOpen = True
MSComm.InputMode = comInputModeBinary
End Sub
Private Sub CmdScan_Click()
Load FrmInitDev
FrmInitDev.Visible = True
FrmInitDev.Show
FrmMain.Hide
Dim i As Byte
Dim CmdPing(2) As Byte
FrmMain.TView.Nodes.Clear
FrmMain.TView.Nodes.Add , , "Building", "大楼"
GenCmd CmdPing, CMD_PING
For i = 1 To 10
FrmInitDev.LblDev.Caption = i
FrmInitDev.ProgressBar.Value = i
If SendCommand(CmdPing, i, TIMEOUT_WAITCLIENT) Then
AddDevice i
End If
Next i
Unload FrmInitDev
FrmMain.Show
End Sub
Public Sub AddDevice(id As Byte)
Dim DevInfo, DevData As String
DevInfo = QueryDeviceInfo(id)
DevData = QueryDeviceData(id)
TView.Nodes.Add "Building", tvwChild, "F" & id, DevInfo + ":" + DevData
End Sub
Private Sub CmdAdjTimer_Click()
Dim Cmd(5) As Byte
Cmd(2) = Hour(Time)
Cmd(3) = Minute(Time)
Cmd(4) = Second(Time) + 1
GenCmd Cmd, CMD_ADJ_TIMER
If Not SendGroupCmd(Cmd, TIMEOUT_WAITREPLY) Then
MsgBox "发送命令失败"
End If
RefreshDevice
End Sub
Private Sub CmdAirCon_Click()
Dim CmdAir(3) As Byte
g_Cancel = True
Load FrmAirCon
FrmAirCon.Visible = True
FrmAirCon.Show
While FrmAirCon.Visible = True
DoEvents
Sleep 50
Wend
If Not g_Cancel Then
CmdAir(2) = FrmAirCon.AirCon
GenCmd CmdAir, CMD_CON_AIRCON
If Not SendGroupCmd(CmdAir, TIMEOUT_WAITREPLY) Then
MsgBox "发送命令失败"
End If
End If
RefreshDevice
End Sub
Private Sub CmdLight_Click()
Dim CmdLight(3) As Byte
g_Cancel = True
Load FrmLight
FrmLight.Visible = True
FrmLight.Show
While FrmLight.Visible = True
DoEvents
Sleep 50
Wend
If Not g_Cancel Then
CmdLight(2) = FrmLight.Light
GenCmd CmdLight, CMD_CON_LIGHT
If Not SendGroupCmd(CmdLight, TIMEOUT_WAITREPLY) Then
MsgBox "发送命令失败"
End If
End If
RefreshDevice
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Unload FrmAirCon
Unload FrmComPort
Unload FrmLight
Unload FrmTimer
Unload Me
End Sub
Private Sub OptManualDisable_Click()
Dim CmdMan(2) As Byte
If OptManualDisable.Value = True Then
GenCmd CmdMan, CMD_DISABLE_MANUAL_CON
If Not SendGroupCmd(CmdMan, 500) Then
MsgBox "发送命令失败"
End If
End If
RefreshDevice
End Sub
Private Sub OptManualEnable_Click()
Dim CmdMan(2) As Byte
If OptManualEnable.Value = True Then
GenCmd CmdMan, CMD_ENABLE_MANUAL_CON
If Not SendGroupCmd(CmdMan, 500) Then
MsgBox "发送命令失败"
End If
End If
RefreshDevice
End Sub
Private Sub CmdTimer_Click()
Dim Cmd(6) As Byte
Dim i As Byte
Load FrmTimer
FrmTimer.Visible = True
FrmTimer.Show
While FrmTimer.Visible = True
DoEvents
Sleep 50
Wend
If Not g_Cancel Then
Cmd(2) = FrmTimer.HourUp
Cmd(3) = FrmTimer.MinuteUp
Cmd(4) = FrmTimer.HourDown
Cmd(5) = FrmTimer.MinuteDown
GenCmd Cmd, CMD_SETTIMER_POWER
If Not SendGroupCmd(Cmd, TIMEOUT_WAITREPLY) Then
MsgBox "发送命令失败"
End If
End If
RefreshDevice
End Sub
Private Sub CmdRefresh_Click()
RefreshDevice
End Sub
Public Sub RefreshDevice()
Dim i As Node
Dim id As Byte
For Each i In FrmMain.TView.Nodes
If i.Children = 0 And i.Key <> "Building" Then
id = CByte(Right(i.Key, Len(i.Key) - 1))
i.Text = Left(i.Text, InStr(i.Text, ":"))
i.Text = i.Text + QueryDeviceData(id)
End If
Next i
End Sub
Private Sub TView_NodeCheck(ByVal Node As MSComctlLib.Node)
Dim NChild As Node
Set NChild = Node.Child
While Not NChild Is Nothing
NChild.Checked = Node.Checked
TView_NodeCheck NChild
Set NChild = NChild.Next
Wend
End Sub
Public Function QueryDeviceInfo(id As Byte) As String
Dim Cmd(3) As Byte
GenCmd Cmd, CMD_QUERY_ROOM
If SendCommand(Cmd, id, TIMEOUT_WAITREPLY) Then
If Cmd(2) < 10 Then
QueryDeviceInfo = CStr(Cmd(1)) + "0" + CStr(Cmd(2)) + "室"
Else
QueryDeviceInfo = CStr(Cmd(1)) + CStr(Cmd(2)) + "室"
End If
Exit Function
End If
QueryDeviceInfo = "Fail"
End Function
Public Function QueryDeviceData(id As Byte) As String
Dim Cmd(8) As Byte
Dim i As Byte
Dim sLight As String
GenCmd Cmd, CMD_QUERY_DATA
If SendCommand(Cmd, id, TIMEOUT_WAITREPLY) Then
sLight = " "
For i = 0 To 5
If Cmd(5) Mod 2 = 1 Then
sLight = sLight + "○"
Else
sLight = sLight + "●"
End If
Cmd(5) = Int(Cmd(5) / 2)
Next i
QueryDeviceData = "灯:" + sLight
QueryDeviceData = QueryDeviceData + " 光强:" + CStr(Cmd(1))
QueryDeviceData = QueryDeviceData + " 温度:" + CStr(Cmd(2)) + "." + CStr(Cmd(3)) + "℃"
If Cmd(7) = 1 Then
QueryDeviceData = QueryDeviceData + " 手动 "
Else
QueryDeviceData = QueryDeviceData + " 自动 "
End If
Select Case Cmd(4)
Case 0
QueryDeviceData = QueryDeviceData + " 区域1:无人 区域2:无人"
Case 1
QueryDeviceData = QueryDeviceData + " 区域1:有人 区域2:无人"
Case 2
QueryDeviceData = QueryDeviceData + " 区域1:无人 区域2:有人"
Case 3
QueryDeviceData = QueryDeviceData + " 区域1:有人 区域2:有人"
End Select
Exit Function
End If
QueryDeviceData = "Fail"
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -