MSCOMM牛在VB中发送十六进制数据的方法 <转
>
、初始化配置
Private Sub Form_Load()
With MSComm1
If .PortOpen = True Then .PortOpen = False End If
.CommPort = 4
.Settings = BaudRate & ”,n,8,1 ” .InBufferSize = 1024 .OutBufferSize = 1024
.InputMode = comInputModeBinary
.InputLen = 0
.SThreshold = 0 .InBufferCount = 0 .OutBufferCount = 0
.RThreshold = 1
'使用COM1 '设置通信口参数
'设置MSComm1 接收缓冲区为1024字节
'设置MSComm1 发送缓冲区为1024字节
'设置接收数据模式为二进制形式
'设置Input 一次从接收缓冲读取全部字节数
'设置发送完所有产生 OnComm 事件 '清除接收缓冲区 '清除发送缓冲区
'设置接收一个字节产生 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.I nput ' ' 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 '
MSComml.InBufferCount = 0
接收缓冲区满的处理
MsgBox \"接收缓冲区满了!\"' ----------------- 发出警告 End Select
End Sub
因篇幅问题不能全部显示,请点此查看更多更全内容