一种主从机之间的通讯数据处理方法与流程

    技术2025-03-22  45


    本发明涉及通讯技术和数据处理,特别涉及一种主从机之间的通讯数据处理方法。


    背景技术:

    1、常规主-从机通讯多采用串口通讯协议,并且每次都由主机发起、由从机响应。由串口通讯协议的原理可知,发送方每次以比特(bit)信号为最小信号单元进行单字节(byte)发送或多字节串发,接收方则对应的以比特信号为最小信号单元进行单字节接收或多字节串收,其中,比特信号若为高电平信号则对应的比特位数值为1、比特信号若为低电平信号则对应的比特位数值为0;并且在单字节或多字节的收发过程中,还需要对每个字节进行对应的起始位、数据位、结束位和校验位的设置和校验解析以保证数据收发的正确性。这种标准的串口通讯方式,在主从机设备时钟偏差极小且从机设备为独立供电设备的情况下不会有什么问题;但在从机设备为需要借助主机供电的低功耗设备、主从机设备时钟存在一定偏差等情况下就可能会出现以下异常情况:1)从机信号抗扰能力较差,比特信号经常会出现幅值不够的情况,这就会导致单字节的起始、数据、结束或校验位被误读的概率升高,如果按照标准串口通讯方式进行字节校验和数据解析则对应的校验、解析失败概率也会升高;2)从机时钟偏差大,比特信号容易出现信号宽度不标准的情况,这也会导致单字节的起始、数据、结束或校验位被误读的概率升高,如果按照标准串口通讯方式进行字节校验和数据解析则对应的校验、解析失败概率同样会升高。


    技术实现思路

    1、本发明的目的,就是针对现有技术的缺陷,提供一种主从机之间的通讯数据处理方法;该方法在主从机的比特信号通讯过程中以基于占空比进行0/1比特值识别的处理方式来替换以绝对比特信号幅值进行0/1比特值识别的传统处理方式,由此可以提高主从机的比特信号容错率;并在每次从机发送完一个字节之后通过主机侧发送一段定长低电平信号的方式来拉大从机的字节发送间隔,通过降速的办法来减少主从机的字节收发错误、提高主从机的字节收发成功率;并不再在每个字节中设置对应的起始、结束和校验位,而是以字节级的全帧校验方式来替换传统比特级的字节校验方式,由此既可以减少数据收发数量、提高收发效率,还可以在不缺失数据校验功能的前提下降低校验复杂度。本发明方法提供的这种改进后的串口通讯方式,不但可以降低主从机的通讯处理难度、提高主从机的数据收发准确度,还具备更好的设备兼容性。

    2、为实现上述目的,本发明实施例提供了一种主从机之间的通讯数据处理方法,所述方法包括:

    3、第一主机在获得向第一从机发送的第一主机数据帧时,对主机通讯工作阶段是否处于主机通讯初始阶段进行识别;若是,则将所述主机通讯工作阶段切换到主机数据发送阶段;所述主机通讯工作阶段包括主机通讯初始阶段、主机数据发送阶段、从机数据接收阶段和从机数据解析阶段;

    4、所述第一主机在所述主机通讯工作阶段为主机数据发送阶段时,向所述第一从机发送一段信号时长不低于预设前置时长的高电平信号;并在该段高电平信号发送结束时将所述第一主机数据帧顺序切分成多个第一主机字节数据;并对所有所述第一主机字节数据进行顺次遍历;并在遍历时将当前遍历的所述第一主机字节数据作为对应的当前主机字节数据,并对所述当前主机字节数据进行单字节发送;并在当次单字节发送结束时对所述当前主机字节数据是否为最后一个所述第一主机字节数据进行识别;若否,则转至下一个所述第一主机字节数据继续遍历;若是,则将所述主机通讯工作阶段切换到从机数据接收阶段;

    5、所述第一主机在所述主机通讯工作阶段为从机数据接收阶段时,以当前时间为起始时间向后顺延一个时长为预设主机等待时长的时间段作为对应的当前等待时窗并在所述当前等待时窗内对所述第一从机进行从机比特信号接收,若在所述当前等待时窗接收到一个从机比特信号则以当前时间为新的起始时间向后顺延一个时长为所述预设主机等待时长的时间段作为新的所述当前等待时窗对下一个从机比特信号进行接收,若在所述当前等待时窗内未能接收到一个从机比特信号则将所述主机通讯工作阶段切换到从机数据解析阶段;并在每接收到一个从机比特信号时,就基于预设的0/1值高低电平占空比对当前从机比特信号进行数值数据转换得到对应的第一从机比特数据;并由连续得到的八个所述第一从机比特数据组成一个对应的第一从机字节数据并保存;并在每得到一个所述第一从机字节数据时就向所述第一从机发送一段信号时长不低于预设字节间隔时长的低电平信号;

    6、所述第一主机在所述主机通讯工作阶段为从机数据解析阶段时,由得到的所有所述第一从机字节数据组成对应的第一从机数据帧;并对所述第一从机数据帧进行数据帧格式校验生成对应的第一校验结果;若所述第一校验结果为校验失败,则对累计重发次数开始计数并将所述主机通讯工作阶段切换到主机数据发送阶段对所述第一主机数据帧进行重发直到所述累计重发次数的计数值超过预设的最大重发次数为止;若所述第一校验结果为校验成功,则对所述第一从机数据帧进行从机数据处理并将所述主机通讯工作阶段切换到主机通讯初始阶段。

    7、所述方法还包括:

    8、所述第一从机在从机通讯工作阶段处于任一阶段时,一旦接收到所述第一主机发送的一段信号时长为所述预设前置时长的高电平信号就将所述从机通讯工作阶段切换到主机数据接收阶段;所述从机通讯工作阶段包括从机通讯初始阶段、主机数据接收阶段、主从机数据解析封装阶段和从机数据发送阶段;

    9、所述第一从机在所述从机通讯工作阶段为主机数据接收阶段时,对所述第一主机进行主机比特信号接收;并在每接收到一个主机比特信号时,就基于所述0/1值高低电平占空比对当前主机比特信号进行数值数据转换得到对应的第二主机比特数据;并由连续得到的八个所述第二主机比特数据组成一个对应的第二主机字节数据并保存;并对当前所述第二主机字节数据是否与预设的帧头标识符匹配进行识别,若匹配则将当前所述第二主机字节数据之前的其他所述第二主机字节数据删除;并对当前所述第二主机字节数据是否与预设的帧尾标识符匹配进行识别,若匹配则将所述从机通讯工作阶段切换到主从机数据解析封装阶段;

    10、所述第一从机在所述从机通讯工作阶段为主从机数据解析封装阶段时,由得到的所有所述第二主机字节数据组成对应的第二主机数据帧;并对所述第二主机数据帧进行数据帧格式校验生成对应的第二校验结果;若所述第二验证结果为校验成功,则根据所述第二主机数据帧进行返回帧数据准备处理得到对应的第二从机数据帧,并将所述从机通讯工作阶段切换到从机数据发送阶段;若所述第二验证结果为校验失败,则将所述从机通讯工作阶段切换到从机通讯初始阶段;

    11、所述第一从机在所述从机通讯工作阶段为从机数据发送阶段时,将所述第二从机数据帧顺序切分成多个第二从机字节数据;并对所有所述第二从机字节数据进行顺次遍历;并在遍历时将当前遍历的所述第二从机字节数据作为对应的当前从机字节数据,并对所述当前从机字节数据进行单字节发送;并在当次单字节发送结束时对所述当前从机字节数据是否为最后一个所述第二从机字节数据进行识别;若否,则在确认接收到所述第一主机发送的一段信号时长为所述预设字节间隔时长的低电平信号之后转至下一个所述第二从机字节数据继续遍历;若是,则将所述从机通讯工作阶段切换到从机通讯初始阶段。

    12、优选的,任一数据帧的完整数据格式应为一个由预设的所述帧头标识符、参数序列长度、数据帧类型、数据帧参数序列、数据帧校验码和预设的所述帧尾标识符顺序拼接而成的数据序列;

    13、所述帧头标识符的数据长度为一个字节;

    14、所述参数序列长度的数据长度为预设的第一字节长度;

    15、所述数据帧类型的数据长度为一个字节;

    16、所述数据帧参数序列的数据长度与对应的所述参数序列长度匹配;

    17、所述数据帧校验码的数据长度为预设的第二字节长度;

    18、所述帧尾标识符的数据长度为一个字节;

    19、所述数据帧类型包括数据类型和指令类型;

    20、所述数据帧校验码为基于预设的校验码算法对由所述参数序列长度、所述数据帧类型和所述数据帧参数序列顺序拼接而成的数据序列进行校验码计算得到的校验码数据。

    21、优选的,所述对所述当前主机字节数据进行单字节发送,具体包括:

    22、将所述当前主机字节数据顺序切分成多个第一主机比特数据;

    23、对所有所述第一主机比特数据进行顺次遍历;并在遍历时,将当前遍历的所述第一主机比特数据作为对应的当前主机比特数据;并在所述当前主机比特数据为0时,生成一个信号时长为预设的第一比特信号时长且高低电平占空比满足预设的0值高低电平占空比的第一主机比特信号向所述第一从机发送;并在所述当前主机比特数据为1时,生成一个信号时长为所述第一比特信号时长且高低电平占空比满足预设的1值高低电平占空比的第二主机比特信号向所述第一从机发送;所述第一、第二主机比特信号都是由一个以下降沿开始的低电平信号和一个后续的高电平信号组成的;所述第一主机比特信号中高电平信号时长与低电平信号时长的比值满足所述0值高低电平占空比;所述第二主机比特信号中高电平信号时长与低电平信号时长的比值满足所述1值高低电平占空比;

    24、并在遍历结束时,确认当次单字节发送结束。

    25、优选的,所述基于预设的0/1值高低电平占空比对当前从机比特信号进行数值数据转换得到对应的第一从机比特数据,具体包括:

    26、对所述当前从机比特信号中的低电平信号时长进行检测得到对应的第一低电平时长;并对所述当前从机比特信号中的高电平信号时长进行检测得到对应的第一高电平时长;并将所述第一高电平时长与所述第一低电平时长的比值作为对应的第一高低电平占空比;

    27、若所述第一高低电平占空比与预设的1值高低电平占空比的绝对差值小于预设的小占空比差分阈值,则将对应的所述第一从机比特数据设为1;

    28、若所述第一高低电平占空比与预设的0值高低电平占空比的绝对差值小于所述小占空比差分阈值,则将对应的所述第一从机比特数据设为0。

    29、优选的,所述对所述第一从机数据帧进行数据帧格式校验生成对应的第一校验结果,具体包括:

    30、将所述第一从机数据帧的第一个字节作为对应的第一帧头;

    31、将所述第一从机数据帧的最后一个字节作为对应的第一帧尾;

    32、将所述第一从机数据帧中起始位置为所述第一帧头的下一字节位置且数据长度为所述第一字节长度的子数据段作为对应的第一参数序列长度;

    33、将所述第一从机数据帧中所述第一参数序列长度的下一字节作为对应的第一数据帧类型;

    34、将所述第一从机数据帧中结束位置为所述第一帧尾的上一字节位置且数据长度为所述第二字节长度的子数据段作为对应的第一数据帧校验码;

    35、将所述第一从机数据帧中起始位置为所述第一数据帧类型的下一字节位置且结束位置为所述第一数据帧校验码的上一字节位置的子数据段作为对应的第一数据帧参数序列;

    36、对所述第一帧头是否与预设的所述帧头标识符匹配进行识别;若是,则设置对应的第一结果为合格,若否则设置对应的所述第一结果为不合格;

    37、对所述第一帧尾是否与预设的所述帧尾标识符匹配进行识别;若是,则设置对应的第二结果为合格,若否则设置对应的所述第二结果为不合格;

    38、对所述第一数据帧参数序列的数据长度是否与所述第一参数序列长度匹配进行识别;若是,则设置对应的第三结果为合格,若否则设置对应的所述第三结果为不合格;

    39、对所述第一数据帧类型是否为数据类型或指令类型进行识别;若是,则设置对应的第四结果为合格,若否则设置对应的所述第四结果为不合格;

    40、由所述第一参数序列长度、所述第一数据帧类型和所述第一数据帧参数序列顺序拼接得到对应的第一数据序列;并基于所述校验码算法对所述第一数据序列进行校验码计算得到对应的第一校验码;并对所述第一校验码是否与所述第一数据帧校验码匹配进行识别;若是,则设置对应的第五结果为合格,若否则设置对应的所述第五结果为不合格;

    41、对得到的所述第一、第二、第三、第四和第五结果是否都为合格进行识别;若是,则设置对应的所述第一校验结果为校验成功;若否,则设置对应的所述第一校验结果为校验失败。

    42、优选的,所述基于所述0/1值高低电平占空比对当前主机比特信号进行数值数据转换得到对应的第二主机比特数据,具体包括:

    43、对所述当前主机比特信号中的低电平信号时长进行检测得到对应的第二低电平时长;并对所述当前主机比特信号中的高电平信号时长进行检测得到对应的第二高电平时长;并将所述第二高电平时长与所述第二低电平时长的比值作为对应的第二高低电平占空比;

    44、若所述第二高低电平占空比与预设的1值高低电平占空比的绝对差值小于预设的小占空比差分阈值,则将对应的所述第二主机比特数据设为1;

    45、若所述第二高低电平占空比与预设的0值高低电平占空比的绝对差值小于所述小占空比差分阈值,则将对应的所述第二主机比特数据设为0。

    46、优选的,所述对所述第二主机数据帧进行数据帧格式校验生成对应的第二校验结果,具体包括:

    47、将所述第二主机数据帧的第一个字节作为对应的第二帧头;

    48、将所述第二主机数据帧的最后一个字节作为对应的第二帧尾;

    49、将所述第二主机数据帧中起始位置为所述第二帧头的下一字节位置且数据长度为所述第一字节长度的子数据段作为对应的第二参数序列长度;

    50、将所述第二主机数据帧中所述第二参数序列长度的下一字节作为对应的第二数据帧类型;

    51、将所述第二主机数据帧中结束位置为所述第二帧尾的上一字节位置且数据长度为所述第二字节长度的子数据段作为对应的第二数据帧校验码;

    52、将所述第二主机数据帧中起始位置为所述第二数据帧类型的下一字节位置且结束位置为所述第二数据帧校验码的上一字节位置的子数据段作为对应的第二数据帧参数序列;

    53、对所述第二帧头是否与预设的所述帧头标识符匹配进行识别;若是,则设置对应的第六结果为合格,若否则设置对应的所述第六结果为不合格;

    54、对所述第二帧尾是否与预设的所述帧尾标识符匹配进行识别;若是,则设置对应的第七结果为合格,若否则设置对应的所述第七结果为不合格;

    55、对所述第二数据帧参数序列的数据长度是否与所述第二参数序列长度匹配进行识别;若是,则设置对应的第八结果为合格,若否则设置对应的所述第八结果为不合格;

    56、对所述第二数据帧类型是否为数据类型或指令类型进行识别;若是,则设置对应的第九结果为合格,若否则设置对应的所述第九结果为不合格;

    57、由所述第二参数序列长度、所述第二数据帧类型和所述第二数据帧参数序列顺序拼接得到对应的第二数据序列;并基于所述校验码算法对所述第二数据序列进行校验码计算得到对应的第二校验码;并对所述第二校验码是否与所述第二数据帧校验码匹配进行识别;若是,则设置对应的第十结果为合格,若否则设置对应的所述第十结果为不合格;

    58、对得到的所述第六、第七、第八、第九和第十结果是否都为合格进行识别;若是,则设置对应的所述第二校验结果为校验成功;若否,则设置对应的所述第二校验结果为校验失败。

    59、优选的,所述根据所述第二主机数据帧进行返回帧数据准备处理得到对应的第二从机数据帧,具体包括:

    60、将所述第二主机数据帧的所述第二数据帧类型和所述第二数据帧参数序列输入预设的主机数据处理接口进行处理;并将所述主机数据处理接口返回的数据帧作为对应的所述第二从机数据帧。

    61、优选的,所述对所述当前从机字节数据进行单字节发送,具体包括:

    62、将所述当前从机字节数据顺序切分成多个第二从机比特数据;

    63、对所有所述第二从机比特数据进行顺次遍历;并在遍历时,将当前遍历的所述第二从机比特数据作为对应的当前从机比特数据;并在所述当前从机比特数据为0时,生成一个信号时长为预设的第一比特信号时长且高低电平占空比满足预设的0值高低电平占空比的第一从机比特信号向所述第一主机发送;并在所述当前从机比特数据为1时,生成一个信号时长为所述第一比特信号时长且高低电平占空比满足预设的1值高低电平占空比的第二从机比特信号向所述第一主机发送;所述第一、第二从机比特信号都是由一个以下降沿开始的低电平信号和一个后续的高电平信号组成的;所述第一从机比特信号中高电平信号时长与低电平信号时长的比值满足所述0值高低电平占空比;所述第二从机比特信号中高电平信号时长与低电平信号时长的比值满足所述1值高低电平占空比;

    64、并在遍历结束时,确认当次单字节发送结束。

    65、本发明实施例提供了一种主从机之间的通讯数据处理方法;该方法在主从机的比特信号通讯过程中以基于占空比进行0/1比特值识别的处理方式来替换以绝对比特信号幅值进行0/1比特值识别的传统处理方式,提高了主从机的比特信号容错率;并在每次从机发送完一个字节之后通过主机侧发送一段定长低电平信号的方式来拉大从机的字节发送间隔,通过降速的办法减少了主从机的字节收发错误、提高了主从机的字节收发成功率;并不再在每个字节中设置对应的起始、结束和校验位,而是以字节级的一次性全帧校验方式来替换传统比特级的重复性字节校验方式,既减少了数据收发数量、提高了收发效率,也在不缺失数据校验功能的前提下降低了校验复杂度。本发明方法提供的这种改进后的串口通讯方式,不但降低了主从机的通讯处理难度、提高了主从机的数据收发准确度,还具备了更好的设备兼容性。


    技术特征:

    1.一种主从机之间的通讯数据处理方法,其特征在于,所述方法包括:

    2.根据权利要求1所述的主从机之间的通讯数据处理方法,其特征在于,所述方法还包括:

    3.根据权利要求2所述的主从机之间的通讯数据处理方法,其特征在于,

    4.根据权利要求1所述的主从机之间的通讯数据处理方法,其特征在于,所述对所述当前主机字节数据进行单字节发送,具体包括:

    5.根据权利要求1所述的主从机之间的通讯数据处理方法,其特征在于,所述基于预设的0/1值高低电平占空比对当前从机比特信号进行数值数据转换得到对应的第一从机比特数据,具体包括:

    6.根据权利要求3所述的主从机之间的通讯数据处理方法,其特征在于,所述对所述第一从机数据帧进行数据帧格式校验生成对应的第一校验结果,具体包括:

    7.根据权利要求2所述的主从机之间的通讯数据处理方法,其特征在于,所述基于所述0/1值高低电平占空比对当前主机比特信号进行数值数据转换得到对应的第二主机比特数据,具体包括:

    8.根据权利要求3所述的主从机之间的通讯数据处理方法,其特征在于,所述对所述第二主机数据帧进行数据帧格式校验生成对应的第二校验结果,具体包括:

    9.根据权利要求8所述的主从机之间的通讯数据处理方法,其特征在于,所述根据所述第二主机数据帧进行返回帧数据准备处理得到对应的第二从机数据帧,具体包括:

    10.根据权利要求2所述的主从机之间的通讯数据处理方法,其特征在于,所述对所述当前从机字节数据进行单字节发送,具体包括:


    技术总结
    本发明实施例涉及一种主从机之间的通讯数据处理方法,所述方法包括:主机获得主机数据帧后进入主机数据发送阶段;在主机数据发送阶段时先向从机发送一段前置高电平信号再将主机数据帧向从机发送,并在发送结束时进入从机数据接收阶段;在从机数据接收阶段时基于等待时窗滑动机制进行从机比特信号接收,并在每完成一个从机字节数据的接收时就向从机发送一段间隔低电平信号,并在等待时窗内没接收到任何从机比特信号时进入从机数据解析阶段;在从机数据解析阶段时对得到的从机数据帧进行格式校验并基于校验结果确认是重发还是正常处理。通过本发明可以降低主从机的通讯处理难度、提高主从机的数据收发准确度。

    技术研发人员:李佳豪,曾小光,胡坚珉,曾羿臣,蒋荟林,肖龙光,吴家富,张立明
    受保护的技术使用者:忆月启函(成都)科技有限公司
    技术研发日:
    技术公布日:2024/10/24
    转载请注明原文地址:https://symbian.8miu.com/read-27944.html

    最新回复(0)