No.105894 作者:duoduokoko 邮件:duoduokoko@163.com ID:78031 登陆:1次 文章数:1篇 最后登陆IP:58.63.72.191 最后登陆:2007/5/15 19:42:19 注册:2007/5/15 19:36:20 财富:105 发帖时间:2007/5/15 19:42:19 发贴者IP:58.63.72.191 标题:duoduokoko:高手请进~~VB与单片机的串口通信问题。。急~~~ 加急~~~请帮帮忙 摘要:No.105894高手请进~~VB与单片机的串口通信问题。。急~~~ 加急~~~请帮帮忙 我从单片机接收了数据过来,现在又需要把从单片机接收的数据再从串口发回到单片机。如:发送F0,单片机回:F0,发送0F,单片机回09(这个数据是随机的,不是固定的)。现在我需要把这个随机的数据再从串口发到单片机中,如,接着发送09,单片机回09 0F。现在我的问题是:发送F0以及0F可以接收到F0 09,但是再将09发回去就不行了,必须要按两次cmdSend_Click 才行。而且按第一次的时候,在MSCOMM1_OnComm函数中,随机数a1可以显示在text2中,但不能显示在SendData2函数中的text4,要按第二次cmdSend_Click ,才能显示在text4中。但是从单片机接收到的数据就不对了。 我照你的程序大致如下: dim a1 as variant '定义a1为全局变量 Private Sub cmdSend_Click() Dim bytData(0) As Byte dim bytData(0) As Byte dim bytData2 As variant bytData(0) = &HF0 bytData1(0)=&HF Call SendData(bytData) call SendData1(bytData1) bytData2 = a1 call SendData2(bytData2) End Sub Public Function SendData2(ByRef bytData2 As variant) As Long text4.text = a1 On Error Resume Next MSComm1.InBufferCount = 0 '清空接收缓冲区 MSComm1.Output = bytData2 '发送数据 Do DoEvents Loop Until MSComm1.OutBufferCount = 0 '等待,直到数据发送完毕 MSComm1.OutBufferCount = 0 '清空发送缓冲区 End Function Public Function SendData1(ByRef bytData1() As Byte) As Long On Error Resume Next MSComm1.InBufferCount = 0 '清空接收缓冲区 MSComm1.Output = bytData 1'发送数据 Do DoEvents Loop Until MSComm1.OutBufferCount = 0 '等待,直到数据发送完毕 MSComm1.OutBufferCount = 0 '清空发送缓冲区 End Function Public Function SendData(ByRef bytData() As Byte) As Long On Error Resume Next MSComm1.InBufferCount = 0 '清空接收缓冲区 MSComm1.Output = bytData '发送数据 Do DoEvents Loop Until MSComm1.OutBufferCount ......
>>返回讨论的主题
|