为什么我的VB串口通信接收不到数据

来源:百度知道 编辑:UC知道 时间:2024/06/12 11:35:45
Dim i As Integer
Dim j As Integer
Private Sub Command1_Click()
Timer1.Enabled = True
End Sub

Private Sub Form_Load()
i = 0
j = 0
MSComm1.CommPort = 1 '设置通信端口号为COM1
MSComm1.InputMode = comInputModeBinary '以二进制格式读取数据
MSComm1.RThreshold = 1 '设置并返回的要接收的字符数
MSComm1.SThreshold = 1 '设置并返回传输缓冲区中允许的字符数
MSComm1.Handshaking = comNone
MSComm1.Settings = "9600,n,8,1" '设置串口参数
MSComm1.PortOpen = True
End Sub

Private Sub MSComm1_OnComm()
Dim inbyte() As Byte '输入缓冲区字节数组
Dim buffer As String '字符串类型缓冲区(十六进制表示)
i = i + 1
Debug.Print "发送 " & i
Select Case MSComm1.CommEvent
Case comEvReceive
j = j + 1
Debug.Print "接收 " & j
For i = LBound(inbyte) To UBound(inbyte) '顺序取输入缓冲区每个字节



楼上 说对了,你没有 接收 语句

建议看看 清华出版的 入门书

Visual_Basic与_RS-232_串行通信控制
有电子文档,网上有下载的

inbyte=MSComm1.Input
你只定义了数组,但是不用它来接收输入的数据,怎么能行?在中断中把上面那一句加上就OK了,如下:
Case comEvReceive
j = j + 1
Debug.Print "接收 " & j
inbyte=MSComm1.Input

For i = LBound(inbyte) To UBound(inbyte) '顺序取输入缓冲区每个字节
buffer = buffer + Hex(inbyte(i)) + Chr(32) 'chr(32)一个空格
Next i