📄 form1.frm
字号:
Text1.Text = ""
End Sub
'--------------------------------------------------------------------
'自动发送(自动获取开关量)按钮:定时开启
'--------------------------------------------------------------------
Private Sub atuosend_Click()
Timer1.Enabled = True
End Sub
'--------------------------------------------------------------------
'MSCOMM控件事件:接收数据
'--------------------------------------------------------------------
Private Sub MSComm1_OnComm()
Dim BRec() As Byte
Dim Buffer As Variant
Dim temp
Dim string1 As String
Dim string2 As String
Dim string4 As String
Dim i As Integer
Static j As Integer
Static k As Integer
Static recstring As String
MSComm1.InputMode = comInputModeBinary
Select Case MSComm1.CommEvent
Case 2 'comevreceive
MSComm1.InputLen = 0
Buffer = MSComm1.Input
BRec() = Buffer
' Text1.Text = ""
For i = 0 To UBound(BRec)
If Len(Hex(BRec(i))) = 1 Then
temp = 0 & Hex(BRec(i))
Else
temp = Hex(BRec(i))
End If
'Text1.Text = Text1.Text & " " & temp '& vbCrLf
recstring = recstring & temp
k = InStr(recstring, "5E") - 1
If Len(recstring) = 12 + k Then
j = Val("&h" & temp)
End If
If Len(recstring) = k + 12 + j * 2 + 3 * 2 Then '一个数据串的长度
'Text11.Text = Right$(recstring, 18 + j * 2)
Text1.Text = Text1.Text & " " & recstring & vbCrLf
If Len(Text1.Text) > 300 Then
Text1.Text = ""
End If
string1 = Mid$(recstring, 13 + k, 2) '获取命令字
If string1 = "83" Then '交流输入电压
Text9.Text = Mid$(recstring, 16 + k, 1) & Mid$(recstring, 17 + k, 2)
ElseIf string1 = "85" Then '直流输出电压
Text2.Text = "-" & Mid$(recstring, 16 + k, 2) & "." & Mid$(recstring, 18 + k, 1)
ElseIf string1 = "87" Then '3路直流输出电流
Text3.Text = Mid$(recstring, 16 + k, 2) & "." & Mid$(recstring, 18 + k, 1)
Text4.Text = Mid$(recstring, 20 + k, 2) & "." & Mid$(recstring, 22 + k, 1)
Text10.Text = Mid$(recstring, 24 + k, 2) & "." & Mid$(recstring, 26 + k, 1)
ElseIf string1 = "8B" Then
string4 = Mid$(recstring, 15 + k, 2)
If string4 = "00" Then
Text17.Text = "电源模块无告警"
End If
If string4 = "01" Then
Text17.Text = "1号电源模块告警"
End If
If string4 = "02" Then
Text17.Text = "2号电源模块告警"
End If
If string4 = "03" Then
Text17.Text = "3号电源模块告警"
End If
If string4 = "04" Then
Text17.Text = "1、2号电源模块告警"
End If
If string4 = "05" Then
Text17.Text = "2、3号电源模块告警"
End If
If string4 = "06" Then
Text17.Text = "1、3号电源模块告警"
End If
If string4 = "07" Then
Text17.Text = "1、2、3号电源模块告警"
End If
If string4 = "08" Then
Text17.Text = "交流输入电压过压告警"
End If
If string4 = "09" Then
Text17.Text = "交流输入电压欠压告警"
End If
If string4 = "0A" Then
Text17.Text = "直流输出电压过压告警"
End If
If string4 = "0B" Then
Text17.Text = "直流输出电压欠压告警"
End If
If string4 = "0C" Then
Text17.Text = "直流输出总电流过流告警"
End If
ElseIf string1 = "93" Then
MsgBox "交流输入电压偏移量设置成功", vbOKOnly & vbInformation, "设置提示"
ElseIf string1 = "95" Then
MsgBox "直流输出电压偏移量设置成功", vbOKOnly & vbInformation, "设置提示"
ElseIf string1 = "97" Then
MsgBox "直流输出电流偏移量设置成功", vbOKOnly & vbInformation, "设置提示"
ElseIf string1 = "99" Then
MsgBox "存储参数被清除", vbOKOnly & vbInformation, "设置提示"
End If
recstring = ""
k = 0
End If
Next
End Select
End Sub
'--------------------------------------------------------------------
'交流输入电压单选框
'--------------------------------------------------------------------
Private Sub Option1_Click()
select1 = &H92
End Sub
'--------------------------------------------------------------------
'直流输出电压单选框
'--------------------------------------------------------------------
Private Sub Option2_Click()
select1 = &H94
End Sub
'--------------------------------------------------------------------
'直流输出电流单选框
'--------------------------------------------------------------------
Private Sub Option3_Click()
select1 = &H96
End Sub
'--------------------------------------------------------------------
'打开串口按钮
'--------------------------------------------------------------------
Private Sub st_Click()
Dim baud As String
Dim stringtemp As String
'MSComm1.CommPort = 1
If Form1.Combo11 = "Com1" Then
MSComm1.CommPort = 1 '设置或返回串口号
End If
If Form1.Combo11 = "Com2" Then
MSComm1.CommPort = 2
End If
If Form1.Combo11 = "Com3" Then
MSComm1.CommPort = 3
End If
If Form1.Combo11 = "Com4" Then
MSComm1.CommPort = 4
End If
If Form1.Combo11 = "Com5" Then
MSComm1.CommPort = 5
End If
If Form1.Combo11 = "Com6" Then
MSComm1.CommPort = 6
End If
If Form1.Combo11 = "Com7" Then
MSComm1.CommPort = 7
End If
If Form1.Combo11 = "Com8" Then
MSComm1.CommPort = 8
End If
If Form1.Combo11 = "Com9" Then
MSComm1.CommPort = 9
End If
If Form1.Combo11 = "Com10" Then
MSComm1.CommPort = 10
End If
If Form1.Combo11 = "Com11" Then
MSComm1.CommPort = 11
End If
If Form1.Combo11 = "Com12" Then
MSComm1.CommPort = 12
End If
If Form1.Combo11 = "Com13" Then
MSComm1.CommPort = 13
End If
If Form1.Combo11 = "Com14" Then
MSComm1.CommPort = 14
End If
If Form1.Combo11 = "Com15" Then
MSComm1.CommPort = 15
End If
If Form1.Combo11 = "Com16" Then
MSComm1.CommPort = 16
End If
baud = baudrate.Text
'MSComm1.Settings = "2400,N,8,1" 'mscomm1控件的初始化
stringtemp = "N,8,1"
MSComm1.Settings = baud & "," & stringtemp
MSComm1.InputLen = 0 '接收缓冲区中全部内容
MSComm1.InBufferSize = 50
MSComm1.OutBufferSize = 50
MSComm1.InBufferCount = 0 '清空接收与发送缓冲区
MSComm1.OutBufferCount = 0
MSComm1.RThreshold = 1 '接收与发送的门限(阀值)
MSComm1.SThreshold = 1
MSComm1.PortOpen = True
st.Enabled = False
stopcom.Enabled = True
End Sub
'--------------------------------------------------------------------
'关闭串口按钮
'--------------------------------------------------------------------
Private Sub stopcom_Click()
MSComm1.PortOpen = False
st.Enabled = True
stopcom.Enabled = False
End Sub
Private Sub Text19_KeyPress(KeyAscii As Integer)
If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then
If KeyAscii = Asc(".") Then
Exit Sub
End If
Beep
KeyAscii = 0
End If
End Sub
Private Sub Text20_KeyPress(KeyAscii As Integer)
If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then
If KeyAscii = Asc(".") Then
Exit Sub
End If
Beep
KeyAscii = 0
End If
End Sub
Private Sub Text21_KeyPress(KeyAscii As Integer)
If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then
If KeyAscii = Asc(".") Then
Exit Sub
End If
Beep
KeyAscii = 0
End If
End Sub
'--------------------------------------------------------------------
'时钟控件:用于数据的自动发送(输入电压)
'--------------------------------------------------------------------
Private Sub Timer1_Timer()
Dim First_chr(0 To 9) As Byte
Dim vsend As Variant
Dim n As Integer
Dim k As Integer
Dim t As Byte
Dim i As Integer
Dim j As String
Timer1.Enabled = False
If st.Enabled = True Then
MsgBox "串口没打开", vbOKOnly & vbInformation, "提示打开串口"
Exit Sub
End If
MSComm1.InputMode = comInputModeBinary
First_chr(0) = &H5E
First_chr(1) = &H10
First_chr(2) = Val(Trim("&H" & adr.Text))
First_chr(3) = &HB2
First_chr(4) = &HF0
First_chr(5) = &H1
First_chr(6) = &H82
For n = 1 To 6
k = k + First_chr(n)
If k > 255 Then
k = k - 256
End If
Next n
t = k
First_chr(7) = Val("&H" & Hex$(k))
Text7.Text = Hex$(Val("&H" & Hex$(k)))
k = Not t
k = k + 1
First_chr(8) = Val("&H" & Hex$(k))
Text8.Text = Hex$(Val("&H" & Hex$(k)))
First_chr(9) = &HD
send.Text = ""
For i = 0 To 9
j = Hex$(First_chr(i))
If Len(j) = 1 Then
j = "0" & j
End If
send.Text = send.Text & j
Next i
vsend = First_chr()
Call SendData(First_chr)
Timer2.Enabled = True
End Sub
'--------------------------------------------------------------------
'时钟控件:用于数据的自动发送(输出电压)
'--------------------------------------------------------------------
Private Sub Timer2_Timer()
Dim First_chr(0 To 9) As Byte
Dim vsend As Variant
Dim n As Integer
Dim k As Integer
Dim t As Byte
Dim i As Integer
Dim j As String
Timer2.Enabled = False
If st.Enabled = True Then
MsgBox "串口没打开", vbOKOnly & vbInformation, "提示打开串口"
Exit Sub
End If
MSComm1.InputMode = comInputModeBinary
First_chr(0) = &H5E
First_chr(1) = &H10
First_chr(2) = Val(Trim("&H" & adr.Text))
First_chr(3) = &HB2
First_chr(4) = &HF0
First_chr(5) = &H1
First_chr(6) = &H84
For n = 1 To 6
k = k + First_chr(n)
If k > 255 Then
k = k - 256
End If
Next n
t = k
First_chr(7) = Val("&H" & Hex$(k))
Text5.Text = Hex$(Val("&H" & Hex$(k)))
k = Not t
k = k + 1
First_chr(8) = Val("&H" & Hex$(k))
Text6.Text = Hex$(Val("&H" & Hex$(k)))
First_chr(9) = &HD
send.Text = ""
For i = 0 To 9
j = Hex$(First_chr(i))
If Len(j) = 1 Then
j = "0" & j
End If
send.Text = send.Text & j
Next i
vsend = First_chr()
Call SendData(First_chr)
Timer3.Enabled = True
End Sub
'--------------------------------------------------------------------
'时钟控件:用于数据的自动发送(输出电流)
'--------------------------------------------------------------------
Private Sub Timer3_Timer()
Dim First_chr(0 To 9) As Byte
Dim vsend As Variant
Dim n As Integer
Dim k As Integer
Dim t As Byte
Dim i As Integer
Dim j As String
Timer3.Enabled = False
If st.Enabled = True Then
MsgBox "串口没打开", vbOKOnly & vbInformation, "提示打开串口"
Exit Sub
End If
MSComm1.InputMode = comInputModeBinary
First_chr(0) = &H5E
First_chr(1) = &H10
First_chr(2) = Val(Trim("&H" & adr.Text))
First_chr(3) = &HB2
First_chr(4) = &HF0
First_chr(5) = &H1
First_chr(6) = &H86
For n = 1 To 6
k = k + First_chr(n)
If k > 255 Then
k = k - 256
End If
Next n
t = k
First_chr(7) = Val("&H" & Hex$(k))
Text14.Text = Hex$(Val("&H" & Hex$(k)))
k = Not t
k = k + 1
First_chr(8) = Val("&H" & Hex$(k))
Text15.Text = Hex$(Val("&H" & Hex$(k)))
First_chr(9) = &HD
send.Text = ""
For i = 0 To 9
j = Hex$(First_chr(i))
If Len(j) = 1 Then
j = "0" & j
End If
send.Text = send.Text & j
Next i
vsend = First_chr()
Call SendData(First_chr)
Timer4.Enabled = True
End Sub
'--------------------------------------------------------------------
'时钟控件:用于数据的自动发送(获取告警信息)
'--------------------------------------------------------------------
Private Sub Timer4_Timer()
Dim First_chr(0 To 9) As Byte
Dim vsend As Variant
Dim n As Integer
Dim k As Integer
Dim t As Byte
Dim i As Integer
Dim j As String
Timer4.Enabled = False
If st.Enabled = True Then
MsgBox "串口没打开", vbOKOnly & vbInformation, "提示打开串口"
Exit Sub
End If
MSComm1.InputMode = comInputModeBinary
First_chr(0) = &H5E
First_chr(1) = &H10
First_chr(2) = Val(Trim("&H" & adr.Text))
First_chr(3) = &HB2
First_chr(4) = &HF0
First_chr(5) = &H1
First_chr(6) = &H8A
For n = 1 To 6
k = k + First_chr(n)
If k > 255 Then
k = k - 256
End If
Next n
t = k
First_chr(7) = Val("&H" & Hex$(k))
k = Not t
k = k + 1
First_chr(8) = Val("&H" & Hex$(k))
First_chr(9) = &HD
send.Text = ""
For i = 0 To 9
j = Hex$(First_chr(i))
If Len(j) = 1 Then
j = "0" & j
End If
send.Text = send.Text & j
Next i
vsend = First_chr()
Call SendData(First_chr)
Timer1.Enabled = True
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -