📄 form1.frm
字号:
VERSION 5.00
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 8265
ClientLeft = 60
ClientTop = 450
ClientWidth = 7170
LinkTopic = "Form1"
ScaleHeight = 8265
ScaleWidth = 7170
StartUpPosition = 3 '窗口缺省
Begin VB.CheckBox Check1
Caption = "Check1"
Height = 375
Left = 6000
TabIndex = 12
Top = 240
Width = 1095
End
Begin VB.CommandButton Command4
Caption = "Command4"
Height = 495
Left = 5160
TabIndex = 11
Top = 7200
Width = 1215
End
Begin VB.CommandButton Command3
Caption = "Command3"
Height = 495
Left = 2280
TabIndex = 10
Top = 240
Width = 1095
End
Begin VB.ListBox List1
Height = 5460
Left = 5040
TabIndex = 9
Top = 840
Width = 1455
End
Begin VB.Timer Timer1
Interval = 1000
Left = 1200
Top = 5640
End
Begin VB.CommandButton Command2
Caption = "Command2"
Height = 495
Left = 480
TabIndex = 8
Top = 1920
Width = 2415
End
Begin VB.TextBox Text1
Height = 3975
Left = 120
MultiLine = -1 'True
ScrollBars = 2 'Vertical
TabIndex = 7
Top = 2760
Width = 2655
End
Begin VB.CommandButton Command1
Caption = "显示"
Height = 495
Left = 120
TabIndex = 6
Top = 2280
Width = 1215
End
Begin VB.CommandButton btn接收2
Caption = "接收2"
Height = 495
Left = 4800
TabIndex = 5
Top = 240
Width = 855
End
Begin VB.CommandButton btn发送2
Caption = "发送2"
Height = 495
Left = 1320
TabIndex = 4
Top = 240
Width = 855
End
Begin VB.TextBox txt接收
Height = 7335
Left = 2880
MultiLine = -1 'True
ScrollBars = 2 'Vertical
TabIndex = 3
Top = 840
Width = 1695
End
Begin VB.TextBox txt发送
Height = 1215
Left = 120
TabIndex = 2
Text = "1"
Top = 840
Width = 2535
End
Begin VB.CommandButton btn接收1
Caption = "接收1"
Height = 495
Left = 3720
TabIndex = 1
Top = 240
Width = 855
End
Begin VB.CommandButton btn发送1
Caption = "发送1"
Height = 495
Left = 240
TabIndex = 0
Top = 240
Width = 855
End
Begin MSCommLib.MSComm MSComm1
Left = 1560
Top = 2280
_ExtentX = 1005
_ExtentY = 1005
_Version = 393216
DTREnable = -1 'True
ParityReplace = 0
RThreshold = 34
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Dim byteInputBuffer() As Byte
Dim byteInputI As Integer
Dim strInputBuffer As String
Dim flag As Boolean '是文本方式(true)还是二进制方式(false)
Dim ComWork As Integer '串口是否在5次内采集过
Private Function jisuan(ii As Byte, jj As Byte, kk As Byte) As Single
Dim sum As Single '值
Dim n As Integer '指数
Dim flag As Boolean 'true正数,false负数
Dim sTmp As String '二三位的16位字符串
If ii >= 128 Then '1为负数
flag = False
n = 128 - ii
Else '0为正数
flag = True
n = ii
End If
Dim i As Integer
sTmp = dec2bin(jj, 8) + dec2bin(kk, 8)
sum = 0
For i = 1 To 16
If Mid(sTmp, i, 1) = "1" Then
sum = sum + (2 ^ (n - i))
End If
Next i
If flag < 0 Then
sum = sum
Else
sum = -sum
End If
jisuan = sum
End Function
Private Function dec2bin(number As Byte, lenth As Byte) As String
Dim sTmp As String
sTmp = ""
If number = 0 Then
sTmp = "0"
Else
Do Until number = 0
If number Mod 2 = 1 Then
sTmp = "1" + sTmp
Else
sTmp = "0" + sTmp
End If
number = number \ 2 '整除
Loop
End If
Dim i As Integer
Dim stmpl As Integer
stmpl = Len(sTmp)
If lenth > 1 Then
For i = 1 To lenth - stmpl
sTmp = "0" + sTmp
Next i
End If
dec2bin = sTmp
End Function
Private Sub btn发送1_Click()
'文本方式
flag = True
MSComm1.InputMode = comInputModeText
MSComm1.Output = txt发送.Text
End Sub
Private Sub btn发送2_Click()
'二进制方式
flag = False
Dim send(0 To 0) As Byte
MSComm1.InputMode = comInputModeBinary
'send(0) = 1: MSComm1.Output = send: Sleep (20)
'send(0) = 2: MSComm1.Output = send: Sleep (20)
'send(0) = 3: MSComm1.Output = send: Sleep (20)
'send(0) = 4: MSComm1.Output = send: Sleep (20)
'send(0) = 5: MSComm1.Output = send: Sleep (20)
'send(0) = 6: MSComm1.Output = send: Sleep (20)
' send(0) = &H0: MSComm1.Output = send: Sleep (20) '发送前3个 头 全为0
' send(0) = &H0: MSComm1.Output = send: Sleep (20) '发送前3个 头 全为0
' send(0) = &H0: MSComm1.Output = send: Sleep (20) '发送前3个 头 全为0
'
' MSComm1.Settings = "1200,m,8,1" 'm
'
' send(0) = &H12: MSComm1.Output = send: Sleep (20) '发送第4个 分站地址
' send(0) = &HED: MSComm1.Output = send: Sleep (20) '发送第5个 分站地址反码
' send(0) = &H3: MSComm1.Output = send: Sleep (20) '发送第6个 数据个数 3个
' send(0) = &H43: MSComm1.Output = send: Sleep (20) '发送第7个 C的ASCII码 43
' send(0) = &H1: MSComm1.Output = send: Sleep (20) '发送第8个 断电数据 ??
' send(0) = &HFE: MSComm1.Output = send: Sleep (20) '发送第9个 断电数据反码
' send(0) = &H1: MSComm1.Output = send: Sleep (20) '发送第10个 数据和高位 0
' send(0) = &H45: MSComm1.Output = send: Sleep (20) '发送第11个 数据和地位 42
MSComm1.Settings = "1200,s,8,1"
send(0) = &H0: MSComm1.Output = send: Sleep (20) '发送前5个 头 全为0
send(0) = &H0: MSComm1.Output = send: Sleep (20) '发送前5个 头 全为0
send(0) = &H0: MSComm1.Output = send: Sleep (20) '发送前5个 头 全为0
send(0) = &H0: MSComm1.Output = send: Sleep (20) '发送前5个 头 全为0
send(0) = &H0: MSComm1.Output = send: Sleep (20) '发送前5个 头 全为0
MSComm1.Settings = "1200,m,8,1" 'm
send(0) = &H1: MSComm1.Output = send: Sleep (20) '发送第6个 分站地址
send(0) = &HFE: MSComm1.Output = send: Sleep (20) '发送第7个 分站地址反码
send(0) = &H1: MSComm1.Output = send: Sleep (20) '发送第8个 数据个数 1个
send(0) = &H41: MSComm1.Output = send: Sleep (20) '发送第9个 A的ASCII码 41
send(0) = &H0: MSComm1.Output = send: Sleep (20) '发送第10个 数据和高位 0
send(0) = &H42: MSComm1.Output = send: Sleep (20) '发送第11个 数据和地位 42
End Sub
Private Sub btn接收1_Click()
txt接收.Text = Str(MSComm1.InBufferCount)
txt接收.Text = txt接收.Text + " * " + MSComm1.Input
End Sub
Private Sub btn接收2_Click()
Dim arrays() As Byte
Dim i As Integer
i = MSComm1.InBufferCount
ReDim arrays(i) As Byte
arrays = MSComm1.Input
txt接收.Text = Str(i)
'txt接收.Text = txt接收.Text + " * " + Str(arrays(0)) + " * " + Str(arrays(1))
For i = 0 To i - 1
txt接收.Text = txt接收.Text + Chr(13) + Chr(10) + Hex(arrays(i)) + " :" + Str(arrays(i))
Next i
''''''''List1.AddItem (Str(arrays(0)))
End Sub
Private Sub Command1_Click()
On Error GoTo aa
If (UBound(byteInputBuffer) - LBound(byteInputBuffer) + 1) = 34 Then
Dim i As Integer
If (flag) Then
txt接收.Text = "*" + strInputBuffer
Else
txt接收.Text = "字节数:" + Str(byteInputI)
For i = 0 To byteInputI - 1
txt接收.Text = txt接收.Text + Chr(13) + Chr(10) + Hex(byteInputBuffer(i)) + " :" + Str(byteInputBuffer(i))
Next i
Text1.Text = "一号:" + Hex(byteInputBuffer(6)) + " : " + Hex(byteInputBuffer(7)) + " : " + Hex(byteInputBuffer(8)) + Chr(13) + Chr(10)
Text1.Text = Text1.Text + "二号:" + Hex(byteInputBuffer(9)) + " : " + Hex(byteInputBuffer(10)) + " : " + Hex(byteInputBuffer(11)) + Chr(13) + Chr(10)
Text1.Text = Text1.Text + "三号:" + Hex(byteInputBuffer(12)) + " : " + Hex(byteInputBuffer(13)) + " : " + Hex(byteInputBuffer(14)) + Chr(13) + Chr(10)
Text1.Text = Text1.Text + "四号:" + Hex(byteInputBuffer(15)) + " : " + Hex(byteInputBuffer(16)) + " : " + Hex(byteInputBuffer(17)) + Chr(13) + Chr(10)
Text1.Text = Text1.Text + "五号:" + Hex(byteInputBuffer(18)) + " : " + Hex(byteInputBuffer(19)) + " : " + Hex(byteInputBuffer(20)) + Chr(13) + Chr(10)
Text1.Text = Text1.Text + "六号:" + Hex(byteInputBuffer(21)) + " : " + Hex(byteInputBuffer(22)) + " : " + Hex(byteInputBuffer(23)) + Chr(13) + Chr(10)
Text1.Text = Text1.Text + "七号:" + Hex(byteInputBuffer(24)) + " : " + Hex(byteInputBuffer(25)) + " : " + Hex(byteInputBuffer(26)) + Chr(13) + Chr(10)
Text1.Text = Text1.Text + "八号:" + Hex(byteInputBuffer(27)) + " : " + Hex(byteInputBuffer(28)) + " : " + Hex(byteInputBuffer(29)) + Chr(13) + Chr(10)
Text1.Text = Text1.Text + Str(jisuan(byteInputBuffer(6), byteInputBuffer(7), byteInputBuffer(8))) + Chr(13) + Chr(10)
Text1.Text = Text1.Text + "*" + Chr(13) + Chr(10)
Text1.Text = Text1.Text + "*" + Chr(13) + Chr(10)
Text1.Text = Text1.Text + "*" + Chr(13) + Chr(10)
Text1.Text = Text1.Text + "*" + Chr(13) + Chr(10)
Text1.Text = Text1.Text + "*" + Chr(13) + Chr(10)
Text1.Text = Text1.Text + "*" + Chr(13) + Chr(10)
Text1.Text = Text1.Text + "*" + Chr(13) + Chr(10)
Text1.Text = Text1.Text + "*" + Chr(13) + Chr(10)
Text1.Text = Text1.Text + "*" + Chr(13) + Chr(10)
Text1.Text = Text1.Text + "*" + Chr(13) + Chr(10)
Text1.Text = Text1.Text + "*" + Chr(13) + Chr(10)
Text1.Text = Text1.Text + "*" + Chr(13) + Chr(10)
Text1.Text = Text1.Text + "*" + Chr(13) + Chr(10)
End If
Else
Text1.Text = "**"
End If
Exit Sub
aa:
Text1.Text = "??"
End Sub
Private Sub Command2_Click()
'Text1.Text = jisuan(5, 216, 255)
Dim ss(0 To 1) As Byte
Text1.Text = (UBound(byteInputBuffer) - LBound(byteInputBuffer) + 1)
End Sub
Private Sub Command3_Click()
'二进制方式
Dim send1(1 To 11) As Byte
Dim send() As Byte
MSComm1.InputMode = comInputModeBinary
MSComm1.Settings = "1200,m,8,1"
If flag Then
flag = False
ReDim send(11)
send(1) = &H0 '发送前5个 头 全为0
send(2) = &H0 '发送前5个 头 全为0
send(3) = &H0 '发送前5个 头 全为0
send(4) = &H0 '发送前5个 头 全为0
send(5) = &H0 '发送前5个 头 全为0
send(6) = &H1 '发送第6个 分站地址
send(7) = &HFE '发送第7个 分站地址反码
send(8) = &H1 '发送第8个 数据个数 1个
send(9) = &H41 '发送第9个 A的ASCII码 41
send(10) = &H0 '发送第10个 数据和高位 0
send(11) = &H42 '发送第11个 数据和地位 42
Else
flag = True
ReDim send(9)
send(1) = &H0 '发送前3个 头 全为0
send(2) = &H0 '发送前3个 头 全为0
send(3) = &H1 '发送前3个 头 全为0
send(4) = &H0 '发送第6个 分站地址
send(5) = &HFF '发送第7个 分站地址反码
send(6) = &H1 '发送第8个 数据个数 1个
send(7) = &H41 '发送第9个 A的ASCII码 41
send(8) = &H0 '发送第10个 数据和高位 0
send(9) = &H42 '发送第11个 数据和地位 42
End If
MSComm1.Output = send
End Sub
Private Sub Command4_Click()
MSComm1.Settings = "1200,s,8,1"
If Check1.Value Then
Check1.Value = False
Else
Check1.Value = True
End If
End Sub
Private Sub Form_Load()
MSComm1.CommPort = 1
'MSComm1.Settings = "1200,s,8,1"
MSComm1.PortOpen = True
ComWork = 0 '
End Sub
Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False
End Sub
Private Sub MSComm1_OnComm()
''If (flag) Then
'' strInputBuffer = MSComm1.Input '文本方式
''Else
'' byteInputI = MSComm1.InBufferCount
'' ReDim byteInputBuffer(byteInputI) As Byte
'' byteInputBuffer = MSComm1.Input
'' ComWork = -1
''End If
End Sub
Private Sub Timer1_Timer()
''btn发送2_Click
''If ComWork < 0 Then
'' ComWork = 0
'' Command1_Click
''End If
''ComWork = ComWork + 1
End Sub
Private Sub Timer2_Timer()
'Command1_Click
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -