1,451
社区成员
发帖
与我相关
我的任务
分享
Private Sub Form_Load()
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False ' 先判断串口是否打开,如果打开则先关闭
MSComm1.CommPort = 3 ' 设定端口1
MSComm1.Settings = "115200, N,8,1" ' 设置波特率,偶校验, 7位数据位,1位停止位
MSComm1.InBufferSize = 1024 ' 设置接收缓冲区为1024字节
MSComm1.OutBufferSize = 4096 ' 设置发送缓冲区为4096字节
MSComm1.InBufferCount = 0 ' 清空输入缓冲区
MSComm1.OutBufferCount = 0 ' 清空输出缓冲区
MSComm1.SThreshold = 1 ' 发送缓冲区空触发发送事件
MSComm1.RThreshold = 1 ' 每X个字符到接收缓冲区引起触发接收事件
MSComm1.OutBufferCount = 0 ' 清空发送缓冲区
MSComm1.InBufferCount = 0 ' 清空接收缓冲
MSComm1.PortOpen = True ' 打开串口
MSComm1.InputMode = comInputModeText
' 链接串口
Private Sub Command3_Click()
Dim i As Integer, _
m_Port As Integer
m_Port = 0
On Error Resume Next
i = Int(Text1.Text) ' 串口号 1-255
MSComm1.PortOpen = False
If Err.number <> 0 Then
Err.Clear
End If
MSComm1.CommPort = i
MSComm1.Settings = "57600,N,8,1"
MSComm1.PortOpen = True
If Err.number <> 0 Then
Err.Clear
m_Port = 0
GoTo protError
End If
MSComm1.RThreshold = 1
MSComm1.SThreshold = 1
MSComm1.InputMode = comInputModeBinary
Shape1.BackColor = &HFFFF& ' 弄个链接成功提示色
Exit Sub
protError:
If m_Port = 0 Then
Shape1.BackColor = &HFF& ' 弄个链接失败提示色
Exit Sub
End If
End Sub
' 串口接收数据事件处理过程
Private Sub MSComm1_OnComm()
Dim Bytes() As Byte, _
Size As Long, _
by_tmp As Byte, _
str_out As String, _
i As Long
On Error Resume Next
' 通过事件标志判断是否接收数据
If MSComm1.CommEvent = comEvReceive Then
Bytes = MSComm1.Input '// 将数据接收到动态数组中
Size = UBound(Bytes) '// 取得数组最大边界数
' 将接收到的数据一个一个字节的进行识别处理,开始循环数组字节
For i = 0 To Size
by_tmp = Bytes(i)
str_out = str_out & Right("0" & Hex(by_tmp), 2) & " "
'这里你可以一个字节一个字节的处理信息
'......
next_data:
Next i
AddLog str_out
End If
End Sub