我在text3文本显示的时候,显示的是数值行,但是数值前面有个0,例如:07161.20这样的格式,这个0是减去&H33得到的,怎么能够去掉呢?Dim inbuff() As Byte
Dim X As Integer ''''''''''''''''''''''''''''''''''''''''定义为全局变量,那么x就会记住以前的,反之,若是定义在oncommon里面,每次触发事件都会重新开始
Dim i As Integer
Dim nowstr(60) As Byte
Dim strHex As String '全局变量,用于累加接受的字符串
Dim NUM As Integer
Private Sub Combo1_Click() On Error GoTo uerror '发现错误跳转到错误处理
Select Case Combo1.Text
Case "COM1"
NUM = 1
Case "COM2"
NUM = 2
Case "COM3"
NUM = 3
Case "COM4"
NUM = 4
Case "COM5"
NUM = 5
Case "COM6"
NUM = 6
Case "COM7"
NUM = 7
Case "COM8"
NUM = 8
Case "COM9"
NUM = 9
End Select
uerror:If err.Number = 8005 Then
msg$ = "串口已打开!" '错误显示
Title$ = "错误"
XX = MsgBox(msg$, 64, Title$) '64标示显示警告图标
End IfEnd SubPrivate Sub ComClear_Click()
List1.Clear
End Sub
Private Sub ComOpen_Click() On Error GoTo err If ComOpen.Caption = "打开串口" Then
MSComm1.CommPort = NUM
MSComm1.PortOpen = True
ComOpen.Caption = "关闭串口"
Shape1.FillColor = &HC000&
Combo1.Locked = True '''''''''''''''''''''''''''用于保证下拉框在串口打开时不被改变,锁定属性
Select Case Combo3
Case "无None"
MSComm1.Settings = Str(Combo2) + "N" + Str(Combo4) + Str(Combo5)
Case "奇Odd"
MSComm1.Settings = Str(Combo2) + "O" + Str(Combo4) + Str(Combo5)
Case "偶Even"
MSComm1.Settings = Str(Combo2) + "E" + Str(Combo4) + Str(Combo5)
End Select
Else
MSComm1.PortOpen = False
Shape1.FillColor = &HFF0000
ComOpen.Caption = "打开串口"
Combo1.Locked = False '''''''''''''''''''''''''''用于保证下拉框在串口打开时不被改变,解除锁定属性
End Iferr:
If err.Number = 8002 Then
XX = MsgBox("无效端口!", 64, "提示")
End If
End SubPrivate Sub Form_Load() 'MSComm1初始化
Dim a As Integer
'MSComm1.CommPort = 5
'MSComm1.Settings = "1200,e,8,1"
MSComm1.InBufferSize = 1024
MSComm1.InputMode = comInputModeBinary
MSComm1.RThreshold = 1
''MSComm1.PortOpen = True
MSComm1.OutBufferCount = 0 '清除发送缓冲区
MSComm1.InBufferCount = 0 '清除接收缓冲区
Do While a < 9
a = a + 1
Combo1.AddItem "COM" & a
Loop
Combo2.AddItem "12800"
Combo2.AddItem "11520"
Combo2.AddItem "9600"
Combo2.AddItem "4800"
Combo2.AddItem "2400"
Combo2.AddItem "1200"
Combo2.AddItem "600"
Combo3.AddItem "无None"
Combo3.AddItem "奇Odd"
Combo3.AddItem "偶Even"
Combo4.AddItem "4"
Combo4.AddItem "5"
Combo4.AddItem "6"
Combo4.AddItem "7"
Combo4.AddItem "8"
Combo5.AddItem "1"
Combo5.AddItem "2"
Combo1.ListIndex = 2
Combo2.ListIndex = 5
Combo3.ListIndex = 2
Combo4.ListIndex = 4
Combo5.ListIndex = 0
'Call ComOpen_Click
End SubPrivate Sub List1_DblClick()
List1.Clear
End Sub Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case 2
MSComm1.InputLen = 0 '''''读取接收缓冲区中全部的内容
inbuff = MSComm1.Input
strHex = strHex & Right("0" & Hex(inbuff(0)), 2) & " "
nowstr(X) = inbuff(0)
X = X + 1
If Right("0" & Hex(inbuff(0)), 2) = "16" Then
xianshi
End If
End SelectEnd Sub
Public Sub xianshi() Dim vot1 As String
Dim vot2 As String
Dim vot3 As String
Dim vot4 As String
If Right("0" & Hex(nowstr(0)), 2) = "68" And Right("0" & Hex(nowstr(8)), 2) = "81" Then
vot1 = Right("0" & Hex(nowstr(12)), 2)
vot2 = Right("0" & Hex(nowstr(13)), 2)
vot3 = Right("0" & Hex(nowstr(14)), 2)
vot4 = Right("0" & Hex(nowstr(15)), 2)
Text1 = vot4 & " " & vot3 & " " & vot2 & " " & vot1
Text2 = Hex(Val("&H" & vot4) - &H33) & Hex(Val("&H" & vot3) - &H33) _
& Hex(Val("&H" & vot2) - &H33) & "." & Hex((Val("&H" & vot1) - &H33)) '''''''''''''''''''''''''''先把字符串按照16进制显示,然后转成数值型,然后用hex函数16进制显示
Text3 = (Val("&H" & vot4) - &H33)
End If
If List1.ListCount > 20 Then
List1.RemoveItem (0)
End If
List1.AddItem "接收:" & strHex ''''''''''''''列表框显示报文数据
strHex = "" ''''''''''''''''''''''''清空接受内存,每次都是最新的
X = 0 '''''''''''''''''''''''''清空定义的数组个数
MSComm1.OutBufferCount = 0 '清除发送缓冲区
MSComm1.InBufferCount = 0 '清除接收缓冲区
End Sub
Private Sub ComCvot_Click()
Dim OutBuffer() As Byte
Dim q As Integer
Dim p As Integer
Dim room As String
Dim SendStr As String
room = "6858000000000068010243c33116"
ReDim OutBuffer(Len(room))
On Error GoTo err
For q = 1 To Len(room) Step 2
OutBuffer(p) = Val("&H" & Mid(room, q, 2))
p = p + 1
SendStr = SendStr & Mid(room, q, 2) & " "
Next
MSComm1.Output = OutBuffer
List1.AddItem "下发:" & SendStr
SendStr = " "
Text1 = ""
Text2 = ""
Text3 = ""
err:
If err.Number = 8018 Then
XX = MsgBox("请先打开串口!", 64, "提示")
End If
End Sub
Dim X As Integer ''''''''''''''''''''''''''''''''''''''''定义为全局变量,那么x就会记住以前的,反之,若是定义在oncommon里面,每次触发事件都会重新开始
Dim i As Integer
Dim nowstr(60) As Byte
Dim strHex As String '全局变量,用于累加接受的字符串
Dim NUM As Integer
Private Sub Combo1_Click() On Error GoTo uerror '发现错误跳转到错误处理
Select Case Combo1.Text
Case "COM1"
NUM = 1
Case "COM2"
NUM = 2
Case "COM3"
NUM = 3
Case "COM4"
NUM = 4
Case "COM5"
NUM = 5
Case "COM6"
NUM = 6
Case "COM7"
NUM = 7
Case "COM8"
NUM = 8
Case "COM9"
NUM = 9
End Select
uerror:If err.Number = 8005 Then
msg$ = "串口已打开!" '错误显示
Title$ = "错误"
XX = MsgBox(msg$, 64, Title$) '64标示显示警告图标
End IfEnd SubPrivate Sub ComClear_Click()
List1.Clear
End Sub
Private Sub ComOpen_Click() On Error GoTo err If ComOpen.Caption = "打开串口" Then
MSComm1.CommPort = NUM
MSComm1.PortOpen = True
ComOpen.Caption = "关闭串口"
Shape1.FillColor = &HC000&
Combo1.Locked = True '''''''''''''''''''''''''''用于保证下拉框在串口打开时不被改变,锁定属性
Select Case Combo3
Case "无None"
MSComm1.Settings = Str(Combo2) + "N" + Str(Combo4) + Str(Combo5)
Case "奇Odd"
MSComm1.Settings = Str(Combo2) + "O" + Str(Combo4) + Str(Combo5)
Case "偶Even"
MSComm1.Settings = Str(Combo2) + "E" + Str(Combo4) + Str(Combo5)
End Select
Else
MSComm1.PortOpen = False
Shape1.FillColor = &HFF0000
ComOpen.Caption = "打开串口"
Combo1.Locked = False '''''''''''''''''''''''''''用于保证下拉框在串口打开时不被改变,解除锁定属性
End Iferr:
If err.Number = 8002 Then
XX = MsgBox("无效端口!", 64, "提示")
End If
End SubPrivate Sub Form_Load() 'MSComm1初始化
Dim a As Integer
'MSComm1.CommPort = 5
'MSComm1.Settings = "1200,e,8,1"
MSComm1.InBufferSize = 1024
MSComm1.InputMode = comInputModeBinary
MSComm1.RThreshold = 1
''MSComm1.PortOpen = True
MSComm1.OutBufferCount = 0 '清除发送缓冲区
MSComm1.InBufferCount = 0 '清除接收缓冲区
Do While a < 9
a = a + 1
Combo1.AddItem "COM" & a
Loop
Combo2.AddItem "12800"
Combo2.AddItem "11520"
Combo2.AddItem "9600"
Combo2.AddItem "4800"
Combo2.AddItem "2400"
Combo2.AddItem "1200"
Combo2.AddItem "600"
Combo3.AddItem "无None"
Combo3.AddItem "奇Odd"
Combo3.AddItem "偶Even"
Combo4.AddItem "4"
Combo4.AddItem "5"
Combo4.AddItem "6"
Combo4.AddItem "7"
Combo4.AddItem "8"
Combo5.AddItem "1"
Combo5.AddItem "2"
Combo1.ListIndex = 2
Combo2.ListIndex = 5
Combo3.ListIndex = 2
Combo4.ListIndex = 4
Combo5.ListIndex = 0
'Call ComOpen_Click
End SubPrivate Sub List1_DblClick()
List1.Clear
End Sub Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case 2
MSComm1.InputLen = 0 '''''读取接收缓冲区中全部的内容
inbuff = MSComm1.Input
strHex = strHex & Right("0" & Hex(inbuff(0)), 2) & " "
nowstr(X) = inbuff(0)
X = X + 1
If Right("0" & Hex(inbuff(0)), 2) = "16" Then
xianshi
End If
End SelectEnd Sub
Public Sub xianshi() Dim vot1 As String
Dim vot2 As String
Dim vot3 As String
Dim vot4 As String
If Right("0" & Hex(nowstr(0)), 2) = "68" And Right("0" & Hex(nowstr(8)), 2) = "81" Then
vot1 = Right("0" & Hex(nowstr(12)), 2)
vot2 = Right("0" & Hex(nowstr(13)), 2)
vot3 = Right("0" & Hex(nowstr(14)), 2)
vot4 = Right("0" & Hex(nowstr(15)), 2)
Text1 = vot4 & " " & vot3 & " " & vot2 & " " & vot1
Text2 = Hex(Val("&H" & vot4) - &H33) & Hex(Val("&H" & vot3) - &H33) _
& Hex(Val("&H" & vot2) - &H33) & "." & Hex((Val("&H" & vot1) - &H33)) '''''''''''''''''''''''''''先把字符串按照16进制显示,然后转成数值型,然后用hex函数16进制显示
Text3 = (Val("&H" & vot4) - &H33)
End If
If List1.ListCount > 20 Then
List1.RemoveItem (0)
End If
List1.AddItem "接收:" & strHex ''''''''''''''列表框显示报文数据
strHex = "" ''''''''''''''''''''''''清空接受内存,每次都是最新的
X = 0 '''''''''''''''''''''''''清空定义的数组个数
MSComm1.OutBufferCount = 0 '清除发送缓冲区
MSComm1.InBufferCount = 0 '清除接收缓冲区
End Sub
Private Sub ComCvot_Click()
Dim OutBuffer() As Byte
Dim q As Integer
Dim p As Integer
Dim room As String
Dim SendStr As String
room = "6858000000000068010243c33116"
ReDim OutBuffer(Len(room))
On Error GoTo err
For q = 1 To Len(room) Step 2
OutBuffer(p) = Val("&H" & Mid(room, q, 2))
p = p + 1
SendStr = SendStr & Mid(room, q, 2) & " "
Next
MSComm1.Output = OutBuffer
List1.AddItem "下发:" & SendStr
SendStr = " "
Text1 = ""
Text2 = ""
Text3 = ""
err:
If err.Number = 8018 Then
XX = MsgBox("请先打开串口!", 64, "提示")
End If
End Sub
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货