7,763
社区成员
发帖
与我相关
我的任务
分享
Option Explicit
Dim strData As String
Private Sub Command1_Click() '16进制发送,不出现发送80以上的数,接收到为00的错误
Dim sj() As Byte
Dim sj_Txt As String
Dim i As Integer
sj_Txt = Text1
ReDim sj(Len(sj_Txt) / 2 - 1)
For i = 0 To Len(sj_Txt) - 1 Step 2
sj(i / 2) = Val("&H" & Mid(sj_Txt, i + 1, 2))
Next
If MSComm1.PortOpen = True Then
MSComm1.Output = sj
Else
MSComm1.PortOpen = True
MSComm1.Output = sj
End If
End Sub
'执行Command2_Click代码,出现80以上的数,接收到为00错误
Private Sub Command2_Click()
Dim byteloop As Integer
Dim strSend As String
For byteloop = 1 To Len(Text1.Text) Step 2
strSend = Mid$(Text1.Text, byteloop, 2)
MSComm1.Output = Chr$("&h" + strSend)
Next
End Sub
Private Sub Form_Load()
Text1 = "808182838400123456"
MSComm1.RThreshold = 1
MSComm1.NullDiscard = False
MSComm1.InputMode = comInputModeBinary
MSComm1.PortOpen = True
End Sub
Private Sub Mscomm1_Oncomm()
'通讯事件发生
Dim indata As Variant
Dim bytInput() As Byte
Dim intInputLen As Integer
Dim i As Integer
Select Case MSComm1.CommEvent
Case comEvReceive '...有接受事件发生
bytInput = MSComm1.Input
For i = 0 To UBound(bytInput)
If Len(Hex(bytInput(i))) = 1 Then
strData = strData & "0" & Hex(bytInput(i)) '& Chr(32)
Else
strData = strData & Hex(bytInput(i)) '& Chr(32)
End If
Next
Text2 = strData
End Select
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
End Sub
Option Explicit
Dim sj() As Byte
Dim strData As String
Private Sub Command1_Click() '发送数据
Dim buffer As Variant
Dim strsend As String
Dim i As Integer
ReDim sj(Len(Text1.Text) / 2 - 1)
For i = 0 To Len(Text1.Text) - 1 Step 2
sj(i / 2) = Val("&H" & Mid(Text1.Text, i + 1, 2))
Next
MSComm1.Output = sj
strData = ""
End Sub
Private Sub Form_Load()
MSComm1.Settings = "9600,n,8,1"
MSComm1.RThreshold = 1
MSComm1.PortOpen = True
Text1 = "001234567890FF00"
End Sub
Private Sub Mscomm1_Oncomm()
'通讯事件发生
Dim indata As Variant
Dim bytInput() As Byte
Dim intInputLen As Integer
Dim i As Integer
Select Case MSComm1.CommEvent
Case comEvReceive '...有接受事件发生
'此处添加处理接收的代码
MSComm1.InputMode = comInputModeBinary '二进制接收
intInputLen = MSComm1.InBufferCount
ReDim bytInput(intInputLen)
bytInput = MSComm1.Input
'jieshou
For i = 0 To UBound(bytInput)
If Len(Hex(bytInput(i))) = 1 Then
strData = strData & "0" & Hex(bytInput(i))
Else
strData = strData & Hex(bytInput(i))
End If
Next
Text2.Text = strData
End Select
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
End Sub
Private Sub Command1_Click()
For byteloop = 1 To Len(Text1.Text) Step 2
strsend = Mid$(Text1.Text, byteloop, 2)
MSComm1.Output = Chr$("&h" + strsend)
Next
End Sub
Private Sub cmdSendHex_Click() '16进制发送
Dim sj() As Byte
Dim sj_Txt As String
Dim i As Integer
TxtSend = "800A00113135323634389794"
sj_Txt = TxtSend
ReDim sj(Len(sj_Txt) / 2 - 1)
For i = 0 To Len(sj_Txt) - 1 Step 2
sj(i / 2) = Val("&H" & Mid(sj_Txt, i + 1, 2))
Next
MSComm1.Output = sj
End Sub
Private Sub Form_Load()
MSComm1.CommPort = 1 'COM端口
MSComm1.Settings = "9600,n,8,1"
MSComm1.InputMode = comInputModeBinary '采用二进制传输
MSComm1.InBufferCount = 0 '清空接受缓冲区
MSComm1.OutBufferCount = 0 '清空传输缓冲区
MSComm1.RThreshold = 1 '产生MSComm事件
MSComm1.InBufferSize = 1024
MSComm1.PortOpen = True
TxtSend = ""
End Sub
Private Sub cmdSendHex_Click() '16进制发送
Dim sj() As Byte
Dim sj_Txt As String
Dim i As Integer
TxtSend = "800A00113135323634389794"
sj_Txt = TxtSend
ReDim sj(Len(sj_Txt) / 2 - 1)
For i = 0 To Len(sj_Txt) - 1 Step 2
sj(i / 2) = Val("&H" & Mid(sj_Txt, i + 1, 2))
Next
If MSComm1.PortOpen = True Then
MSComm1.Output = sj
Else
MSComm1.PortOpen = True
Shape1.FillColor = vbGreen
Label5.Caption = "打开"
MSComm1.Output = sj
End If
End Sub
Private Sub Form_Load()
MSComm1.CommPort = 1 'COM端口
MSComm1.Settings = "9600,n,8,1"
MSComm1.InputMode = comInputModeBinary '采用二进制传输
MSComm1.InBufferCount = 0 '清空接受缓冲区
MSComm1.OutBufferCount = 0 '清空传输缓冲区
MSComm1.RThreshold = 1 '产生MSComm事件
MSComm1.InBufferSize = 1024
MSComm1.PortOpen = True
TxtSend = ""
End Sub