📄 frmsysreg.frm
字号:
Init_Form
Text2.Text = Right(HardwareEdit_temp, 3)
Text3.Text = CStr(RunTime)
Flag_W_HT = False
Flag_W_RT = False
InitMscomm
End Sub
Private Sub InitMscomm()
On Error GoTo ErrorHandler
With MSComm
.CommPort = COMport
If .PortOpen = True Then
.PortOpen = False
End If
.Settings = COMbaud + ",n,8,1"
.InputMode = comInputModeBinary '设置或返回 Input 属性取回的数据的类型,文本形式或二进制形式
.NullDiscard = False '确定 null 字符是否从端口传送到接收缓冲区
.InBufferSize = 1000 '设置并返回接收缓冲区的字节数。
.OutBufferSize = 1000 '设置并返回发送缓冲区的字节数。
.InBufferCount = 0 '返回接收缓冲区中等待的字符数。属性设置为 0 来清除接收缓冲区。
.OutBufferCount = 0 '返回在传输缓冲区中等待的字符数。 设置 OutBufferCount 属性为 0 可以清除传输缓冲区。
.InputLen = 0 '设置并返回 Input 属性从接收缓冲区读取的字符数
'设置 InputLen 为 0 时,使用 Input 将使 MSComm 控件读取接收缓冲区中全部的内容。
.SThreshold = 0
.RThreshold = 0 '设置并返回的要接收的字符数。 并将产生 OnComm的omEvReceive事件
.PortOpen = True
End With
Exit Sub
ErrorHandler:
MsgBox "串口" + Str(COMport) + " 打开失败", vbCritical '+ vbCrLf + "无此串口或串口已打开"
End Sub
Private Sub SendDataReady()
Dim i As Byte
Dim temp As Long
If Flag_Simular = False Then
If HardwareType = 12 Then
DataArr(0) = MTID
DataArr(1) = &H45
DataArr(2) = &H2
DataArr(3) = &H0
DataArr(4) = &H0
DataArr(5) = &H10
DataArr(6) = &H20
MSComm.RThreshold = 8
For i = 0 To 38
SendBuf(i) = DataArr(i)
Next i
temp = CRC16(39)
SendBuf(39) = CrcDataHI
SendBuf(40) = CrcDataLO
SendLen = 41
Else
DataArr(0) = MTID
DataArr(1) = &H45
DataArr(2) = &H2
DataArr(3) = &H0
DataArr(4) = &H0
DataArr(5) = &HF
DataArr(6) = &H1E
MSComm.RThreshold = 8
For i = 0 To 36
SendBuf(i) = DataArr(i)
Next i
temp = CRC16(37)
SendBuf(37) = CrcDataHI
SendBuf(38) = CrcDataLO
SendLen = 39
End If
End If
If Flag_Simular = True Then
Flag_Simular = False
DataArr(0) = MTID
DataArr(1) = &H66
DataArr(2) = &H3
DataArr(3) = &H0
DataArr(4) = &H0
DataArr(5) = &H0
MSComm.RThreshold = 8
For i = 0 To 5
SendBuf(i) = DataArr(i)
Next i
temp = CRC16(6)
SendBuf(6) = CrcDataHI
SendBuf(7) = CrcDataLO
SendLen = 8
End If
ModbusTrans
End Sub
Private Sub ModbusTrans()
Dim i As Byte
Dim Buf As String
On Error GoTo sendfailed
Buf = String(SendLen, Chr(0))
outbyte = StrConv(Buf, vbFromUnicode)
For i = 0 To SendLen - 1
outbyte(i) = SendBuf(i)
Next i
MSComm.Output = outbyte
Exit Sub
sendfailed:
Err.Clear
End Sub
Private Sub Form_Unload(Cancel As Integer)
FrmSysReg.MSComm.PortOpen = False
Form1.MSComm.PortOpen = True
Form1.TimerofProEX.Enabled = True
Form1.Timer1.Enabled = True
End Sub
Private Sub MSComm_OnComm()
Dim i As Byte
On Error GoTo ErrHandler1
With MSComm
Select Case .CommEvent
Case comEvReceive
.RThreshold = 0
inputbyte = .Input
Reclen = 0
For i = LBound(inputbyte) To UBound(inputbyte)
RecBuf(Reclen) = inputbyte(i)
DataArr(Reclen) = RecBuf(Reclen)
Reclen = Reclen + 1
Next i
CRC16 (Reclen - 2)
If (RecBuf(Reclen - 2) = CrcDataHI) And (RecBuf(Reclen - 1) = CrcDataLO) Then
If RecBuf(0) = MTID Then
If Flag_W_RT = True Then
Flag_W_RT = False
MsgBox "运行时长设置成功", , "提示"
Exit Sub
End If
If Flag_W_HT = True Then
Flag_W_HT = False
MsgBox "硬件版本设置成功", , "提示"
Exit Sub
End If
If Flag_Set = True Then
MsgBox "设置成功", , "提示"
Flag_Set = False
Timer1.Enabled = True
Exit Sub
End If
If Timer1.Enabled = True Then
If HardwareType = 0 Then
ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)) / 10)
M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
M1 = (RecBuf(29) * CSng(256) + RecBuf(30)) / 10
ElseIf HardwareType = 1 Then
ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)) / 1000)
M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
M1 = (RecBuf(29) * CSng(256) + RecBuf(30)) / 1000
ElseIf HardwareType = 2 Then
ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)) / 10)
Polarity = RecBuf(6)
M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
M1 = (RecBuf(29) * CSng(256) + RecBuf(30)) / 10
ElseIf HardwareType = 3 Then
ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)) / 10)
Polarity = RecBuf(6)
M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
M1 = (RecBuf(29) * CSng(256) + RecBuf(30)) / 10
ElseIf HardwareType = 7 Then
ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)) / 10)
If RecBuf(7) >= &H80 Then
SuperScript = -CStr(((RecBuf(7) And &H7F) * CSng(256) + RecBuf(8)) / 10)
Else
SuperScript = CStr((RecBuf(7) * CSng(256) + RecBuf(8)) / 10)
End If
If RecBuf(9) >= &H80 Then
SubScript = -CStr(((RecBuf(9) And &H7F) * CSng(256) + RecBuf(10)) / 10)
Else
SubScript = CStr((RecBuf(9) * CSng(256) + RecBuf(10)) / 10)
End If
Temperature = RecBuf(12)
Checkout_0_resistance = RecBuf(14)
Checkout_Full_resistance = RecBuf(16)
M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
M1 = (RecBuf(29) * CSng(256) + RecBuf(30)) / 10
ElseIf HardwareType = 5 Then
ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)) / 10)
If RecBuf(7) >= &H80 Then
SuperScript = -CStr(((RecBuf(7) And &H7F) * CSng(256) + RecBuf(8)) / 10)
Else
SuperScript = CStr((RecBuf(7) * CSng(256) + RecBuf(8)) / 10)
End If
If RecBuf(9) >= &H80 Then
SubScript = -CStr(((RecBuf(9) And &H7F) * CSng(256) + RecBuf(10)) / 10)
Else
SubScript = CStr((RecBuf(9) * CSng(256) + RecBuf(10)) / 10)
End If
M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
M1 = (RecBuf(29) * CSng(256) + RecBuf(30)) / 1000
ElseIf HardwareType = 8 Then
ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)) / 10)
M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
M2_0 = RecBuf(21) * CSng(256) + RecBuf(22)
M2_Full = RecBuf(23) * CSng(256) + RecBuf(24)
M3_0 = RecBuf(25) * CSng(256) + RecBuf(26)
M3_Full = RecBuf(27) * CSng(256) + RecBuf(28)
M1 = (RecBuf(29) * CSng(256) + RecBuf(30)) / 10
ElseIf HardwareType = 9 Then
ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)) / 1000)
M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
M2_0 = RecBuf(21) * CSng(256) + RecBuf(22)
M2_Full = RecBuf(23) * CSng(256) + RecBuf(24)
M3_0 = RecBuf(25) * CSng(256) + RecBuf(26)
M3_Full = RecBuf(27) * CSng(256) + RecBuf(28)
M1 = (RecBuf(29) * CSng(256) + RecBuf(30)) / 1000
ElseIf HardwareType = 10 Then
ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)))
M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
M2_0 = RecBuf(21) * CSng(256) + RecBuf(22)
M2_Full = RecBuf(23) * CSng(256) + RecBuf(24)
M3_0 = RecBuf(25) * CSng(256) + RecBuf(26)
M3_Full = RecBuf(27) * CSng(256) + RecBuf(28)
M1 = RecBuf(29) * CSng(256) + RecBuf(30)
ElseIf HardwareType = 11 Then
ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)))
M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
M2_0 = RecBuf(21) * CSng(256) + RecBuf(22)
M2_Full = RecBuf(23) * CSng(256) + RecBuf(24)
M3_0 = RecBuf(25) * CSng(256) + RecBuf(26)
M3_Full = RecBuf(27) * CSng(256) + RecBuf(28)
M1 = RecBuf(29) * CSng(256) + RecBuf(30)
ElseIf HardwareType = 4 Then
ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)) / 10)
M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
M1 = (RecBuf(29) * CSng(256) + RecBuf(30)) / 10
ElseIf HardwareType = 6 Then
ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)) / 10)
If RecBuf(7) >= &H80 Then
SuperScript = -CStr(((RecBuf(7) And &H7F) * CSng(256) + RecBuf(8)) / 10)
Else
SuperScript = CStr((RecBuf(7) * CSng(256) + RecBuf(8)) / 10)
End If
If RecBuf(9) >= &H80 Then
SubScript = -CStr(((RecBuf(9) And &H7F) * CSng(256) + RecBuf(10)) / 10)
Else
SubScript = CStr((RecBuf(9) * CSng(256) + RecBuf(10)) / 10)
End If
M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
M1 = (RecBuf(29) * CSng(256) + RecBuf(30)) / 10
ElseIf HardwareType = 12 Then
ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)))
M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
M2_0 = RecBuf(21) * CSng(256) + RecBuf(22)
M2_Full = RecBuf(23) * CSng(256) + RecBuf(24)
M3_0 = RecBuf(25) * CSng(256) + RecBuf(26)
M3_Full = RecBuf(27) * CSng(256) + RecBuf(28)
M1 = RecBuf(29) * CSng(256) + RecBuf(30)
M2 = RecBuf(31) * CSng(256) + RecBuf(32)
End If
Init_Form
End If
Else
If Flag_W_HT = True Then
Flag_W_HT = False
MsgBox "硬件版本设置失败", , "提示"
Exit Sub
End If
If Flag_W_RT = True Then
Flag_W_RT = False
MsgBox "运行时长设置失败", , "提示"
Exit Sub
End If
If Flag_Set = True Then
MsgBox "设置失败", , "提示"
Flag_Set = False
Exit Sub
End If
End If
Else
If Flag_W_HT = True Then
Flag_W_HT = False
MsgBox "硬件版本设置失败", , "提示"
Exit Sub
End If
If Flag_W_RT = True Then
Flag_W_RT = False
MsgBox "运行时长设置失败", , "提示"
Exit Sub
End If
If Flag_Set = True Then
MsgBox "设置失败", , "提示"
Flag_Set = False
Exit Sub
End If
End If
End Select
End With
Exit Sub
ErrHandler1:
End Sub
Private Sub Init_Form()
Text1(0).Text = CStr(HardwareType)
Text1(1).Text = ParaFull
If HardwareType = 2 Or HardwareType = 3 Then
If Polarity = 0 Then
Combo1(0).Text = "单极性"
Else
Combo1(0).Text = "双极性"
End If
End If
If HardwareType = 7 Then
Text1(3).Text = CStr(SuperScript)
Text1(4).Text = CStr(SubScript)
If Temperature = 0 Then
Combo1(1).Text = "PT100"
ElseIf Temperature = 1 Then
Combo1(1).Text = "PT50"
ElseIf Temperature = 2 Then
Combo1(1).Text = "CU100"
ElseIf Temperature = 3 Then
Combo1(1).Text = "CU50"
End If
Text1(6).Text = CStr(Checkout_0_resistance)
Text1(7).Text = CStr(Checkout_Full_resistance)
End If
If HardwareType = 5 Or HardwareType = 6 Then
Text1(3).Text = CStr(SuperScript)
Text1(4).Text = CStr(SubScript)
End If
If HardwareType < 8 Or HardwareType = 10 Or HardwareType = 11 Then
Text1(8).Text = CStr(M1_0)
Text1(9).Text = CStr(M1_Full)
Text1(14).Text = CStr(M1)
ElseIf HardwareType < 10 Then
Text1(8).Text = CStr(M1_0)
Text1(9).Text = CStr(M1_Full)
Text1(10).Text = CStr(M2_0)
Text1(11).Text = CStr(M2_Full)
Text1(12).Text = CStr(M3_0)
Text1(13).Text = CStr(M3_Full)
Text1(14).Text = CStr(M1)
ElseIf HardwareType = 12 Then
Text1(8).Text = CStr(M1_0)
Text1(9).Text = CStr(M1_Full)
Text1(10).Text = CStr(M2_0)
Text1(11).Text = CStr(M2_Full)
Text1(12).Text = CStr(M3_0)
Text1(13).Text = CStr(M3_Full)
Text1(14).Text = CStr(M1)
Text1(15).Text = CStr(M2)
End If
End Sub
Private Sub Timer1_Timer()
sendready
ModbusTrans '发送读命令
Timer1.Interval = 1000
Timer1.Enabled = True
End Sub
Private Sub sendready()
Dim temp As Long
Dim i As Byte
DataArr(0) = MTID
If HardwareType = 12 Then
DataArr(1) = &H43
DataArr(2) = 2
DataArr(3) = 1
DataArr(4) = 0
DataArr(5) = &HF
MSComm.RThreshold = 35
Else
DataArr(1) = &H43
DataArr(2) = 2
DataArr(3) = 1
DataArr(4) = 0
DataArr(5) = &HE
MSComm.RThreshold = 33
End If
temp = CRC16(6)
DataArr(6) = CrcDataHI
DataArr(7) = CrcDataLO
For i = 0 To 7
SendBuf(i) = DataArr(i)
Next i
SendLen = 8
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -