MSCOMM 控件在 VB 中发送十六进制数据的方法
[2006-4-1316:39:28|By:MCUBLOG ]
推 荐
一、初始化配置
Private Sub Form_Load(
'-------------------------------------------------------------------------------------
With MSComm1
If .PortOpen =True Then
.PortOpen =False
End If
.CommPort =4'使用 COM1
.Settings =BaudRate &\设置通信口参数
.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 \"串口被占用或此串口不存在!通信无效!\错误提示\"
Exit Sub
End If
End If
End With
End Sub
注意:数据收发模式为 .InputMode =comInputModeBinary '设置接收数据模式为二进制形式 二、发送一个字节的 16进制数据
Dim aa(0As 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 =0To UBound(InByte'循环到指针上标
If InByte(j=13Then
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
因篇幅问题不能全部显示,请点此查看更多更全内容