[0028] 以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
[0029] 需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
[0030] 请参阅图1,本发明提供一种串口通信的验证方法,所述串口通信的验证方法包括以下步骤:
[0031] S11,在第一处理器与第二处理器之间设置相同的波特率;
[0032] S12,由第二处理器发送预设帧长的检验码至一处理器;
[0033] S13,第一处理器将接收到的所述预设帧长的检验码反馈至第二处理器;
[0034] S14,所述第二处理器将第一处理器反馈的检验码与发送的检验码进行比对以判定通信是否正常;
[0035] S15,当判定结果为通信异常时,调整第一处理器与第二处理器间进行通信的数据帧内字节的传输延时。
[0036] 本实施例中,所述预设帧长的检验码为16进制ASCII校验码。
[0037] 具体地,所述通过二分法来调整第一处理器与第二处理器间进行通信的数据帧内字节的传输延时的步骤包括:将传输延时的时间设定为第一预设时间;按照第一预设时间传输数据帧内的字节;判断第一处理器与第二处理器之间的通信是否正常;若正常,将传输延时的时间设定为第二预设时间,所述第二预设时间小于所述第一预设时间;按照第二预设时间传输数据帧内的字节;判断第一处理器与第二处理器之间的通信是否正常;若异常,将传输延时的时间设定为第三预设时间;所述第三预设时间为所述第一预设时间与第二预设时间的平均值;按照第三预设时间传输数据帧内的字节;重复执行判断第一处理器与第二处理器之间的通信是否正常的步骤以及将传输延时的时间进行设定的步骤直到在通信正常时,所述传输处理的时间设定为最小值。
[0038] 应当理解的是,所述通过二分法来调整第一处理器与第二处理器间进行通信的数据帧内字节的传输延时的步骤还可以包括:将传输延时的时间设定为第一预设时间;按照第一预设时间传输数据帧内的字节;判断第一处理器与第二处理器之间的通信是否正常;若异常常,将传输延时的时间设定为第四预设时间,所述第四预设时间大于所述第一预设时间;按照第四预设时间传输数据帧内的字节;判断第一处理器与第二处理器之间的通信是否正常;若正常,将传输延时的时间设定为第五预设时间;所述第五预设时间为所述第一预设时间与第四预设时间的平均值;按照第五预设时间传输数据帧内的字节;重复执行判断第一处理器与第二处理器之间的通信是否正常的步骤以及将传输延时的时间进行设定的步骤直到在通信正常时,所述传输处理的时间设定为最小值。
[0039] 下面结合具体的实例对上述验证过程以及二分法做详细说明。
[0040] 首先,对两个MCU软件设置相同的波特率,建立串口通信;
[0041] 第一处理器(MCU1)收到来自第二处理器(MCU2)的校验帧数据:一串16进制ASCII校验码。该16进制ASCII校验码设计采用数据头、字长、数据校验随机码和数据尾的结构方式,以区分正常通信的数据格式。
[0042] 检验码格式可参考图2,数据头是两个16进制字,用于本帧数据的识别类型为校验专用数据的开始(如图2中所示的第一个字45)。字长用于表示本帧数据的16进制数字的字节数量,(如图2中所示的第一个16进制字64,换算成10进制为100,即该帧长100个字节)。数据校验随机码用于模拟串口通信中一连串的大数据流量。
[0043] 数据尾跟数据头的功能类似,也是两个16进制字,用于本帧数据的识别类型为校验专用数据的结束(如图2中的最后一个字54)。
[0044] 接着,MCU1将收到的帧数据透传返回给MCU2,MCU2的中央处理器通过对比原发送给MCU1的帧和收到MCU1返回的帧。若,对比结果没有数据丢失,也没有数据误码时,表明通信正常,MCU1和MCU2可正常收、发数据。若对比结果不一致,出现数据丢失或者误码。如图3所示,图中的灰色部分表示丢失的数据。
[0045] 那么,则利用用二分法,调整数据帧内各字节之间的传输延时。也就是说,MCU2原设计的数据都是基于正常波特率无延时传输,现改变数据传输的速率,即在每两个字节之间增加一段延时。延时的时间通过二分法决定,例如,假设需要增加延时的初始值为10mS,最小值1mS,最大值1秒,二分法运算10次。
[0046] 下面再详细描述本发明中二分法的具体实施方式:
[0047] 首先延时为10mS时,MCU2的中央处理器通过对比发送给MCU1的帧和收到MCU1返回的帧仍有数据丢失或者误码,则将延时增加到上限值100mS,若在上限值仍然有数据丢失或者误码,则断定系统硬件问题,串口通信中断。
[0048] 若延时增加到100mS时,数据不出现丢失或者误码,则依二分法原理减少延时到50mS;
[0049] 若延时减少到50mS时,数据不出现丢失或者误码,则依二分法原理减少延时到25mS;
[0050] 若延时减少到25mS时,数据不出现丢失或者误码,则依二分法原理减少延时到12.5mS;
[0051] 若延时减少到12.5mS时,数据出现丢失或者误码,则依二分法原理增加延时到18.75mS;
[0052] 以此类推,通过二分法找到不出现数据丢失的最小延时时间,以获取最大的数据量传输速率,以上方法保证串口通信正常。
[0053] 反之,若延时为10mS时,MCU2的中央处理器通过对比发送给MCU1的帧和收到MCU1返回的帧没有数据丢失或者误码,则将延时减小到1mS。
[0054] 若延时减小到1mS时,数据出现丢失或者误码,则依二分法原理增加延时5mS;
[0055] 若延时增加到5mS时,数据出现丢失或者误码,则依二分法原理增加延时7.5mS;
[0056] 若延时增加到7.5mS时,数据不出现丢失或者误码,则依二分法原理减少延时到6.25mS;
[0057] 若延时增加到6.25mS时,数据不出现丢失或者误码,则依二分法原理减少延时到5.625mS;
[0058] 以此类推,通过二分法找到不出现数据丢失的最小延时时间,以获取最大的数据量传输速率,以上方法保证串口通信正常。
[0059] 本实施例中,在不改变通信波特率的前提下,实现两个处理器(MCU)之间通信的最大数据流量无误码传输。首先通过两个MCU软件设置相同的波特率建立串口通信,MCU1(第一处理器)收到来自MCU2(第二处理器)的校验帧数据,该帧数据是1组可定义帧长的一串16进制ASCII校验码,用于检验数据在传输过程中是否有数据丢失、误码。
[0060] MCU1将收到的帧数据透传返回给MCU2,MCU2的中央处理器通过对比发送给MCU1的帧和收到MCU1返回的帧,判定是否有数据在传输过程中或者MCU1的透传处理过程中丢失或者误码,以此确认是否出现通信异常。出现数据丢失或者误码时,通过调整数据帧内各字节之间的传输延时来解决。延时时间通过二分法自动调整,得出最为恰当的一组延时时间。
[0061] 本实施例的串口通信的验证方法,在不改变波特率的情况下,提高了数据传输的精度,大大提高了整体性能。
[0062] 参考图4,本发明提供一种串口通信的验证系统;所述串口通信的验证系统2包括:波特率设置模块21、第一处理器22、第二处理器23、调整模块24;
[0063] 所述波特率设置模块用于在第一处理器与第二处理器之间设置相同的波特率;所述第二处理器用于发送预设帧长的检验码至一处理器;所述第一处理器用于将接收到的所述预设帧长的检验码反馈至第二处理器;所述第二处理器还用于将第一处理器反馈的检验码与发送的检验码进行比对以判定通信是否正常;所述调整模块用于当判定结果为通信异常时,调整第一处理器与第二处理器间进行通信的数据帧内字节的传输延时。
[0064] 所述预设帧长的检验码为16进制ASCII校验码。
[0065] 所述调整模块通过二分法来调整第一处理器与第二处理器间进行通信的数据帧内字节的传输延时。
[0066] 具体地,所述调整模块24包括:预设单元(图中未示出),用于将传输延时的时间设定为第一预设时间;所述第二处理器按照第一预设时间传输数据帧内的字节至第一处理器;所述第二处理器判断第一处理器与第二处理器之间的通信是否正常;所述预设单元还用于在通信正常时,将传输延时的时间设定为第二预设时间,所述第二预设时间小于所述第一预设时间;所述第二处理器按照第二预设时间传输数据帧内的字节至第一处理器;所述第二处理器判断第一处理器与第二处理器之间的通信是否正常;所述预设单元还用于在通信异常,将传输延时的时间设定为第三预设时间;所述第三预设时间为所述第一预设时间与第二预设时间的平均值;所述第二处理器按照第三预设时间传输数据帧内的字节;所述第二处理器重复执行判断第一处理器与第二处理器之间的通信是否正常的步骤以及所述预设单元重复将传输延时的时间进行设定的步骤直到在通信正常时,所述传输处理的时间设定为最小值。
[0067] 应当理解的是,所述调整模块24包括:预设单元(图中未示出),用于将传输延时的时间设定为第一预设时间;所述第二处理器按照第一预设时间传输数据帧内的字节至第一处理器;所述第二处理器判断第一处理器与第二处理器之间的通信是否正常;所述预设单元还用于在通信正常时,将传输延时的时间设定为第四预设时间,所述第四预设时间小于所述第一预设时间;所述第二处理器按照第四预设时间传输数据帧内的字节至第一处理器;所述第二处理器判断第一处理器与第二处理器之间的通信是否正常;所述预设单元还用于在通信异常,将传输延时的时间设定为第五预设时间;所述第五预设时间为所述第一预设时间与第四预设时间的平均值;所述第二处理器按照第五预设时间传输数据帧内的字节;所述第二处理器重复执行判断第一处理器与第二处理器之间的通信是否正常的步骤以及所述预设单元重复将传输延时的时间进行设定的步骤直到在通信正常时,所述传输处理的时间设定为最小值。
[0068] 本实施例的串口通信的验证系统的具体实现过程可参考前述关于串口通信的验证方法的详细描述,在此不再赘述。
[0069] 综上所述,本发明串口通信的验证方法及验证系统,不仅提高了数据传输的精准度,而且还保证了数据的传输速率,从而大大提高了系统的性能。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
[0070] 上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。