用2进制接收,发送可按ASCII字符或BYTE字节. Option Explicit Dim strHex As String Private Sub Form_Load() 'MSComm1初始化 MSComm1.CommPort = 1 MSComm1.RThreshold = 1 MSComm1.Settings = "9600,n,8,2" MSComm1.InputMode = comInputModeBinary '2进制接收 MSComm1.PortOpen = True End SubPrivate Sub MSComm1_OnComm() Dim inbuff() As Byte Dim i As Integer Select Case MSComm1.CommEvent Case comEvReceive inbuff = MSComm1.Input For i = 0 To UBound(inbuff) strHex = strHex & Right("0" & Hex(inbuff(i)), 2) Next i Text1 = strHex '处理接收的数据 End Select End SubPrivate Sub Command1_Click() '发送Byte命令 Dim sendSj(0) As Byte sendSj(1) = &HA MSComm1.Output = sendSj() End Sub
接收到下位机的应答,用 Hex() 函数转换成十六进制字符串来显示即可。
Private Sub Command2_Click() '发送ASCII字符命令 Dim strSj As String strSj = Chr(&HA) '或strSj = Chr(10) MSComm1.Output = strSj End Sub
)时,输出一自定义字符代替控制符
Option Explicit
Dim strHex As String
Private Sub Form_Load() 'MSComm1初始化
MSComm1.CommPort = 1
MSComm1.RThreshold = 1
MSComm1.Settings = "9600,n,8,2"
MSComm1.InputMode = comInputModeBinary '2进制接收
MSComm1.PortOpen = True
End SubPrivate Sub MSComm1_OnComm()
Dim inbuff() As Byte
Dim i As Integer
Select Case MSComm1.CommEvent
Case comEvReceive
inbuff = MSComm1.Input
For i = 0 To UBound(inbuff)
strHex = strHex & Right("0" & Hex(inbuff(i)), 2)
Next i
Text1 = strHex
'处理接收的数据
End Select
End SubPrivate Sub Command1_Click() '发送Byte命令
Dim sendSj(0) As Byte
sendSj(1) = &HA
MSComm1.Output = sendSj()
End Sub
接收到下位机的应答,用 Hex() 函数转换成十六进制字符串来显示即可。
Private Sub Command2_Click() '发送ASCII字符命令
Dim strSj As String
strSj = Chr(&HA) '或strSj = Chr(10)
MSComm1.Output = strSj
End Sub