资源描述
MSCOMM控件在VB中发送十六进制数据的方法<转>
一、初始化配置
Private Sub Form_Load()
'-------------------------------------------------------------------------------------
With MSComm1
If .PortOpen = True Then
.PortOpen = False
End If
.CommPort = 4 '使用COM1
.Settings = BaudRate & ",n,8,1 " '设置通信口参数
.InBufferSize = 1024 '设置MSComm1接收缓冲区为1024字节
.OutBufferSize = 1024 '设置MSComm1发送缓冲区为1024字节
.InputMode = comInputModeBinary '设置接收数据模式为二进制形式
'-----------------------------------------------------------------------------------------------------
.InputLen = 0 '设置Input 一次从接收缓冲读取全部字节数
.SThreshold = 0 '设置发送完所有产生OnComm事件
.InBufferCount = 0 '清除接收缓冲区
.OutBufferCount = 0 '清除发送缓冲区
.RThreshold = 1 '设置接收一个字节产生OnComm事件
' .RTSEnable = True
'-----------------------------------------------------------------------------------------------------
If Not .PortOpen Then '判断通信口是否打开
On Error Resume Next
.PortOpen = True '打开通信口
If Err Then '错误处理
MsgBox "串口被占用或此串口不存在!通信无效!", 16, "错误提示"
Exit Sub
End If
End If
End With
End Sub
注意:数据收发模式为 .InputMode = comInputModeBinary '设置接收数据模式为二进制形式
二、发送一个字节的16进制数据
Dim aa(0) As Byte
aa(0) = &HAA
MSComm1.Output = aa
三、接收数据(事件方式)
Private Sub MSComm1_OnComm()
On Error Resume Next
Dim inData As String '串口接收的数据
Dim InByte() As Byte '定义一个二进制指针放接收到的数据
Dim inByte1() As Byte
Select Case MSComm1.CommEvent '选择事件
Case comEvReceive '接收到字符
TimeNum = 4 '-----------------赋值计时常量
InByte = MSComm1.Input '数据转移到指针
' Serial_Rece_Fg = True
Dim j As Long
For j = 0 To UBound(InByte) '循环到指针上标
If InByte(j) = 13 Then
inData = inData & vbCr 'Lf
Else
inData = inData & Chr(InByte(j)) '------ascii码显示处理
End If
Next j
Txt_Rcv.SelText = inData '将刚收到的字符串显示出来
inData = ""
Txt_Rcv.SelStart = Len(Txt_Rcv.Text) '光标置后
Case comEventRxOver '--------------------接收缓冲区满的处理
MSComm1.InBufferCount = 0
MsgBox "接收缓冲区满了!" '----------发出警告
End Select
End Sub
展开阅读全文