VB MSCOMM接收数据显示不出来
我用vbmscomm控件编的程序,通过串行口和52单片机;现在可以证实单片机可以正常接收数据,但是回传回来电脑就不识别了;请大神帮忙看一下。MSComm1.CommPor...
我用vb mscomm控件编的程序,通过串行口和52单片机;现在可以证实单片机可以正常接收数据,但是回传回来电脑就不识别了;请大神帮忙看一下。
MSComm1.CommPort = 1 配置部分
MSComm1.Settings = "9600,N,8,1"
MSComm1.InputMode = 1
MSComm1.InBufferCount = 0
MSComm1.RThreshold = 1
Private Sub cmdtest_Click() 发送
MSComm1.OutBufferCount = 0 '清空发送缓冲区
textshow.Text = textshow.Text & vbCrLf & "准备发送... "
Dim senddata(0) As Byte
senddata(0) = &HF
MSComm1.Output = senddata
textshow.Text = textshow.Text & vbCrLf & "已经发送 " & senddata(0)
MSComm1.InBufferCount = 0 '清空接收缓冲区
Private Sub timerrec_Timer() ‘接收
Dim buf$
If MSComm1.PortOpen = True Then
buf = Trim(MSComm1.Input) ' 将缓冲区内的数据读入buf变量中
If Len(buf) <> 0 Then ' 判断缓冲区内是否存在数据
textshow.Text = textshow.Text & vbCrLf & "准备接收数据..."
'textshow.Text = textshow.Text & vbCrLf & buf
textshow.Text = textshow.Text + Chr(13) + Chr(10) + buf
textshow.Text = textshow.Text & vbCrLf & "数据接收完毕!"
End If
End If
End Sub
单片机回传
if(RI==1) // 是否有数据到来
{
RI = 0;
tmp = SBUF; // 暂存接收到的数据
P0 = tmp; // 数据传送到P0口
send_char(tmp); // 回传接收到的数据
} 展开
MSComm1.CommPort = 1 配置部分
MSComm1.Settings = "9600,N,8,1"
MSComm1.InputMode = 1
MSComm1.InBufferCount = 0
MSComm1.RThreshold = 1
Private Sub cmdtest_Click() 发送
MSComm1.OutBufferCount = 0 '清空发送缓冲区
textshow.Text = textshow.Text & vbCrLf & "准备发送... "
Dim senddata(0) As Byte
senddata(0) = &HF
MSComm1.Output = senddata
textshow.Text = textshow.Text & vbCrLf & "已经发送 " & senddata(0)
MSComm1.InBufferCount = 0 '清空接收缓冲区
Private Sub timerrec_Timer() ‘接收
Dim buf$
If MSComm1.PortOpen = True Then
buf = Trim(MSComm1.Input) ' 将缓冲区内的数据读入buf变量中
If Len(buf) <> 0 Then ' 判断缓冲区内是否存在数据
textshow.Text = textshow.Text & vbCrLf & "准备接收数据..."
'textshow.Text = textshow.Text & vbCrLf & buf
textshow.Text = textshow.Text + Chr(13) + Chr(10) + buf
textshow.Text = textshow.Text & vbCrLf & "数据接收完毕!"
End If
End If
End Sub
单片机回传
if(RI==1) // 是否有数据到来
{
RI = 0;
tmp = SBUF; // 暂存接收到的数据
P0 = tmp; // 数据传送到P0口
send_char(tmp); // 回传接收到的数据
} 展开
1个回答
展开全部
VB中,串口接收会触发事件,不是用时钟事件,串口事件名称为MSComm1_OnComm()
把你的代码中:
Private Sub timerrec_Timer() ‘接收
If MSComm1.PortOpen = True Then
改成:
Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = comEvReceive Then
把你的代码中:
Private Sub timerrec_Timer() ‘接收
If MSComm1.PortOpen = True Then
改成:
Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = comEvReceive Then
更多追问追答
追问
准备发送...
已经发送 15
然后就没有回应了。。。和之前一样
追答
那应该是你单片机发送的程序有问题,这一块我不了解。但我觉得send_char貌似就发送一个字符,而不是字符串。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询