我首先通过串口向一块cpu芯片传送一段程序(是以发送数据的形式),然后cpu会向串口缓冲区 返回一个数据我需根据这个数据进行下一步处理!~
问题是,等我传送完程序(数据后),必须等待150-200多毫秒后(是根据波形知道的),cpu才能够返回我想要的那个数据.我一直都收不到那个数据,用延时,循环等待,的方法都试过了
还是收不到我所需要的那个数据!~
不知道是否与等待的时间过长有关!~
问题是,等我传送完程序(数据后),必须等待150-200多毫秒后(是根据波形知道的),cpu才能够返回我想要的那个数据.我一直都收不到那个数据,用延时,循环等待,的方法都试过了
还是收不到我所需要的那个数据!~
不知道是否与等待的时间过长有关!~
你所说的串口协议一致,是不是说,有关串口的各种设置啊!~ 我认为不是这里出问题
因为我在发送程序时,当发送完第一个数据,并从串口缓冲区里收到返回数据,再发送第2个数据
的时候,我抓了波形分析,2个数据的发送时间差有将近20个毫秒 ,这样的话,下微机会认为
传送已经结束!~~使的后面的传送无法进行!~`
我开始以为是我的发送程序运行时间过长,但做了优化后(在发送函数里只执行一条发送指令,和一条 if 判断语句,)通过波形分析,结果还是那样!~在MSCOMM 捕捉串口事件的函数里也做了尝试,结果还是那样!
书上解释的是:帧错误,硬件检测到一个帧错误(双方设置的格式不一致时,就会引发)
我还是不怎么懂!~
while(ABSGetInput() != "08 ")
{
m_nBreakFlag ++ ;
if(m_nBreakFlag > 10000)
{
AfxMessageBox("联接超时\n造成此错误的原因如下,请逐一检查:\n1 气囊类型是否匹配\n2 串口选择是否恰当\n3 硬件联接是否完好") ;
m_nBreakFlag = 0 ;
dlg.DestroyWindow() ;
return ;
}
}