我首先通过串口向一块cpu芯片传送一段程序(是以发送数据的形式),然后cpu会向串口缓冲区  返回一个数据我需根据这个数据进行下一步处理!~
问题是,等我传送完程序(数据后),必须等待150-200多毫秒后(是根据波形知道的),cpu才能够返回我想要的那个数据.我一直都收不到那个数据,用延时,循环等待,的方法都试过了
还是收不到我所需要的那个数据!~
不知道是否与等待的时间过长有关!~

解决方案 »

  1.   

    to  lfchen(一条晚起的虫) 
      你所说的串口协议一致,是不是说,有关串口的各种设置啊!~ 我认为不是这里出问题
    因为我在发送程序时,当发送完第一个数据,并从串口缓冲区里收到返回数据,再发送第2个数据
    的时候,我抓了波形分析,2个数据的发送时间差有将近20个毫秒 ,这样的话,下微机会认为
     传送已经结束!~~使的后面的传送无法进行!~`
    我开始以为是我的发送程序运行时间过长,但做了优化后(在发送函数里只执行一条发送指令,和一条 if 判断语句,)通过波形分析,结果还是那样!~在MSCOMM 捕捉串口事件的函数里也做了尝试,结果还是那样!
      

  2.   

    还有一个问题是.m_Com.GetCommEvent()==1004
     书上解释的是:帧错误,硬件检测到一个帧错误(双方设置的格式不一致时,就会引发)
       我还是不怎么懂!~
      

  3.   

    这是我做的,你参考一下
    while(ABSGetInput() != "08 ")
    {
    m_nBreakFlag ++ ;
    if(m_nBreakFlag > 10000)
    {
    AfxMessageBox("联接超时\n造成此错误的原因如下,请逐一检查:\n1 气囊类型是否匹配\n2 串口选择是否恰当\n3 硬件联接是否完好") ;
    m_nBreakFlag = 0 ;
    dlg.DestroyWindow() ;
    return ;
    }
    }