专利类型 | 发明授权 | 法律事件 | 公开; 实质审查; 授权; |
专利有效性 | 有效专利 | 当前状态 | 授权 |
申请号 | CN201910705988.4 | 申请日 | 2019-08-01 |
公开(公告)号 | CN110430017B | 公开(公告)日 | 2022-02-11 |
申请人 | 青岛海信宽带多媒体技术有限公司; | 申请人类型 | 企业 |
发明人 | 王庆华; 王魁; 鄂文晶; | 第一发明人 | 王庆华 |
权利人 | 青岛海信宽带多媒体技术有限公司 | 权利人类型 | 企业 |
当前权利人 | 青岛海信宽带多媒体技术有限公司 | 当前权利人类型 | 企业 |
省份 | 当前专利权人所在省份:山东省 | 城市 | 当前专利权人所在城市:山东省青岛市 |
具体地址 | 当前专利权人所在详细地址:山东省青岛市经济技术开发区前湾港路218号 | 邮编 | 当前专利权人邮编:266555 |
主IPC国际分类 | H04L1/00 | 所有IPC国际分类 | H04L1/00 ; H04L1/18 ; H04B10/50 ; G08C23/00 |
专利引用数量 | 2 | 专利被引用数量 | 0 |
专利权利要求数量 | 9 | 专利文献类型 | B |
专利代理机构 | 北京弘权知识产权代理有限公司 | 专利代理人 | 逯长明; 许伟群; |
摘要 | 本 申请 提供了一种数据发送方法、装置及光模 块 ,通过在光模块内部建立一个可与其所接入的上位机交互的、用于控制数据发送的标志位,即发送状态标志位。其中,当该发送状态标志位被改为第一预设值时,则启动数据发送功能,将预设的数据通过低频信息通道发送给接收端光模块;然后,当确认该数据已被接收端读取时,则将该发送状态标志位由第一预设值改为第二预设值,以通知上位机可以使能进行下一次数据的发送。因此,利用发送状态标志位,避免发送的数据未被接收端读取之前就被新数据 覆盖 的问题,进而可以利用拆分发送、接收整合的方式完成数据的正确传递,实现对接收端的光模块及其接入上位机的远程操控。 | ||
权利要求 | 1.一种数据发送方法,其特征在于,所述方法包括: |
||
说明书全文 | 一种数据发送方法、装置及光模块技术领域[0001] 本申请涉及光通信技术领域,尤其涉及一种数据发送方法、装置及光模块。 背景技术[0002] 在接入网通信系统中,由光线路终端与光网络单元之间建立相互的光连接,以实现数据通信。具体地,光线路终端中具有第一光模块,光网络单元中具有第二光模块,第一光模块与第二光模块之间建立光连接;光线路终端通过第一光模块向第二光模块发送光信号,实现光线路终端向光网络单元发送数据;光线路终端通过第一光模块接收来自第二光模块的光信号,实现光线路终端接收来自光网络单元的数据。 [0003] 在上述通信系统中,光线路终端及光网络单元是光模块的上位机。其中,上位机将数据电信号输入光模块中,由光模块将该数据电信号转换为光信号发出,以实现上位机发送数据;光模块将来自外部的光信号转换为数据电信号,将该数据电信号输入上位机,以实现上位机接收数据。 [0004] 由于光模块在上位机中仅是数据传递者,光模块只能由其上位机进行操控,所以需要人工通过上位机来间接操控光模块。而在接入网物理网络中,光线路终端和/或光网络单元往往位于不便于人工操作的环境,比如高山、森林甚至水体中,在这些环境下操作上位机或使用上位机操控光模块都变得十分困难。发明内容 [0005] 本申请提供了一种数据发送方法、装置及光模块,以使得光模块可以实现远程操控,进而也可以通过对光模块的远程操控实现对上位机的远程操控。 [0006] 根据本申请实施例的第一方面,提供了一种数据发送方法,该方法主要包括: [0007] 查询发送状态标志位是否为第一预设值; [0008] 如果为第一预设值,则将存储在预设数据存储空间中的数据通过低频信息通道发送出去; [0009] 判断是否接收到所述数据已被读取的响应消息; [0010] 如果接收到所述数据已被读取的响应消息,则将所述发送状态标志位由第一预设值改为第二预设值。 [0011] 根据本申请实施例的第二方面,提供了一种数据发送装置,该装置主要包括处理器和存储器,其中: [0012] 所述存储器,用于存储程序代码; [0013] 所述处理器,用于读取所述存储器中存储的程序代码,并执行本申请实施例第一方面所述的方法。 [0015] 所述MCU中设有本申请实施例第二方面所述的数据发送装置; [0016] 所述光发送组件通过印制电路板与MCU连接,所述MCU可以控制光发送组件发送加载有低频信息通道的光信号。 [0017] 由以上实施例可见,本申请实施例提供的数据发送方法、装置及光模块,通过在光模块内部建立一个可与其所接入的上位机交互的、用于控制数据发送的标志位,即发送状态标志位。其中,当该发送状态标志位被改为为第一预设值时,则启动数据发送功能,将上位机写入在预设数据存储空间中的数据通过低频信息通道发送给接收端光模块;然后,当确认发送的数据已被接收端读取时,则将该发送状态标志位由第一预设值改为第二预设值,以通知上位机可以使能进行下一次数据的发送。因此,利用在光模块内所设置的发送状态标志位,可以避免发送的数据未被接收端读取之前就被新数据覆盖的问题,从而使得系统升级包、上报诊断信息等操控信息数据,可以利用拆分发送、接收整合的方式完成数据的正确传递,进而使得接收端的光模块不仅受控于其接入的上位机还可以实现对其远程操控,同时还可以通过对该光模块的远程操控实现对其接入的上位机的远程操控。附图说明 [0018] 为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。 [0019] 图1为本申请实施例提供的光模块的上位机基本结构示意图; [0020] 图2为本申请实施例提供的上位机中的局部结构示意图; [0022] 图4为本申请实施例提供的一种光模块接口中电连接器结构示意图; [0023] 图5为本申请实施例提供光模块金手指结构示意图; [0024] 图6为本申请实施例提供的光模块结构示意图; [0025] 图7为本申请实施例提供的光模块分解结构示意图; [0026] 图8为本实施例提供的一种数据发送方法的基本流程示意图; [0027] 图9为本实施例提供的另一种数据发送方法的基本流程示意图。 具体实施方式[0028] 这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。 [0029] 针对目前光模块只能由其上位机进行操控,即需要人工通过上位机来间接操控光模块,所带来的操作不方便的问题,可以采用一种新的通信方式,使得光模块不仅受控于其接入的上位机,也可以实现远程操控,进而也可以通过对光模块的远程操控实现对上位机的远程操控。 [0030] 光模块被用在光纤通信技术领域中实现光电转换功能,其中,光信号与电信号的相互转换是光模块的核心功能。图1为本申请实施例提供的光模块30的上位机基本结构示意图。图2为本申请实施例提供的上位机中的局部结构示意图。如图1、图2所示,上位机包括上盖体10、下盖体20、电路板40及光模块30,上盖体10及下盖体20形成包裹电路板40及光模块30的腔体,电路板40上具有光模块接口401及网线接口402。 [0031] 其中,光模块接口401用于接入光模块30,光模块接口401中设置有电连接器4011,用于接入金手指等光模块电口,从而与光模块30建立双向的电信号连接;网线接口402用于接入网线,与网线建立双向的电信号连接;光模块30与网线之间通过上位机建立连接,具体地,上位机将来自光模块30的信号传递给网线,将来自网线的信号传递给光模块30,上位机监控光模块30的工作。 [0032] 光模块30的光口与光纤连接,与光纤建立双向的光信号连接;光模块30的电口接入上位机中,与光网络单元建立双向的电信号连接;光模块30实现光信号与电信号的相互转换,从而实现在光纤与上位机之间建立连接;具体地,来自光纤的光信号由光模块30转换为电信号后输入至上位机中,来自上位机的电信号由光模块30转换为光信号输入至光纤中。 [0033] 图3为本申请实施例提供的一种光模块与光模块接口连接结构剖面图,图4为本申请实施例提供的一种光模块接口中电连接器结构示意图,图5为本申请实施例提供光模块金手指结构示意图。如图3、图4、图5所示,光模块的电路板301末端插入上位机的光模块接口401中,实现光模块与上位机之间的电连接。具体地,光模块接口401中具有电连接器4011,电连接器4011具有容纳光模块电路板40的间隙以及压合在光模块电路板40表面的弹片4012,光模块电路板301末端的表面具有呈金属引脚状的金手指3011,电连接器4011中的弹片与金手指接触从而实现电导通。 [0034] 图6为本申请实施例提供的光模块结构示意图。图7为本申请实施例提供的光模块分解结构示意图。如图6、图7所示,本申请实施例提供的光模块30包括电路板301、上壳体302、下壳体303、光收发器件304以及解锁手柄307。 [0035] 上壳体302与下壳体303形成具有两个开口的包裹腔体,具体可以是在同一方向的两端开口(305、306),也可以是在不同方向上的两处开口;其中一个开口为电口305,用于插入光网络单元等上位机中,另一个开口为光口306,用于外部光纤接入以连接内部光纤,电路板301、光收发器件304等光电器件位于包裹腔体中。 [0036] 上壳体302及下壳体303一般采用金属材料,利于实现电磁屏蔽以及散热。解锁手柄307位于包裹腔体/下壳体303的外壁,拉动解锁手柄307的末端可以在使解锁手柄307在外壁表面相对移动;光模块插入上位机时由解锁手柄307将光模块固定在上位机的光模块接口401里,通过拉动解锁手柄307以解除光模块与上位机的卡合关系,从而可以将光模块从上位机的光模块接口401里抽出。 [0037] 光模块电路板301表面的金手指3011具有I2C引脚,上位机与光模块之间可以采用I2C协议、通过I2C引脚进行信息传递。上位机可以向光模块写入信息,具体地,上位机可以将信息写入光模块的寄存器中;光模块无法向上位机写入信息,当光模块需要将信息提供给上位机时,光模块会将信息写入光模块中的预设寄存器中(如本实施例设置的发送状态寄存器、数据发送失败寄存器等),由上位机对该寄存器进行读取,光模块的寄存器一般集成在光模块的微处理器(MCU)3012中,也可以独立设置在光模块的电路板301上。 [0038] 进一步的,该光模块在工作过程中,本实施例设置其可以根据来自光线路终端的数据电信号发出相对高频的数据光信号,以保持光线路终端原有的对外数据传输业务,同时,该光模块还根据非数据电信号(即不是用于正常传输业务的信号)发出相对低频的操控光信号,以向对端的光模块发出操控信息,实现在不打断正常业务的同时向远端系统传递操控数据,例如,利用低频消息通道传送系统升级包实现远端系统的在线升级、上报DDM(数字诊断监控,Digital Diagnostic Monitoring)信息等。 [0039] 由于该光模块及对端的光模块均采用一根光纤对外连接,所以数据光信号及操控光信号混合在同一束光中,以采用同一根光纤传输,为了对不同信号进行区分,本实施例设置数据光信号与操控光信号具有不同的频率。在其实现方式上,可以通过对光模块中的微处理器3012和光收发器件304的设计,使微处理器3012控制光收发器件304,在其发出的高频信号(数据光信号)上叠加有低频调制信号(操控光信号),本实施例称低频调制信号为低频消息通道。例如,在10Gbps或25Gbps信号上叠加低频调制信号50Kbps,其中,10Gbps或25Gbps信号为正常的业务信号,增加的另一路50Kbps的低频信号执行其它操控功能。 [0040] 然而,目前向远端系统传递的操控数据,通常需要传输的数据量较大,而现有的低频消息通道一次性传输数据字节数量有限。对此,本实施例提出了将需要传输的数据包采用先拆分发送后接收整合的方式进行,而采用这种方式时,发送端需要保证的一点就是只有在接收端上位机读取完每次发送端发送的数据后,发送端上位机才能进行下一次数据的使能发送。要想满足上述需求,需要两端系统(涉及发送端上位机、发送端光模块、接收端上位机、接收端光模块)建立一种交互体系,用于实现这种数据包的拆分发送、接收整合的数据传输方式。基于此,本实施例通过在发送端的光模块中建立发送状态标志位以实现以上发送功能。 [0041] 基于上述实现原理,下面将结合附图,对本实施例提供的数据传输方法进行详细介绍。图8为本实施例提供的一种数据发送方法的基本流程示意图。如图8所示,该方法具体包括如下步骤: [0042] S101:查询发送状态标志位是否为第一预设值。 [0043] 本实施例在光模块的寄存器中设置发送状态标志位g_MessageSendEnble,并且,对于该标志位的使能方式,光模块可以将其由第一预设值改为第二预设值、如由1改为0,光模块所连接上位机可以将其由第二预设值改为第一预设值、如由0改为1,当然,如果实际需要光模块也可以将其由第二预设值改为第一预设值。另外,光模块初始上电时,发送状态标志位g_MessageSendEnble默认值为第二预设值。 [0044] 光模块所接入的上位机(可以简称为发送端上位机)可以将需要发送的数据包分割为N个小型数据包,利用光模块的低频消息通道将这N个小型数据包依次发送出去。并且,上位机每次使能光模块进行数据发送前,首先查询该发送状态标志位g_MessageSendEnble,其中,可以利用光模块电路板表面的金手指上的I2C引脚,通过I2C通讯方式查询发送光模块内的寄存器。当该标志位为第二预设值时、如为0时,表明光模块处于空闲状态,可以使能光模块进行数据发送,此时上位机需将该标志位设为第一预设值、如置为1,用于使能光模块进行数据发送;而当该标志位为第一预设值时,上位机不能进行新的数据发送,直到模块内部将该标志位改为第二预设值,才表明上位机可以使能进行下一次数据的发送 [0045] 进一步的,光模块中的MCU可以通过检测上位机是否有更改发送状态标志的动作;如果检测上位机有更改发送状态标志的动作,则查询该上位机写入至发送状态标志位寄存器的数值是否为第一预设值。如果发送状态标志位已被上位机改为第一预设值,则执行步骤S102;否则,则可以在预设时间间隔后继续查询该发送状态标志位。 [0046] 其中,对于该发送状态标志位g_MessageSendEnble的查询方式,光模块和上位机均可以采用轮询的方式查询发送状态标志位,例如上位机查询到该标志位为第一预设值时,则在预设时间间隔后、如1ms,再查询该标志位。 [0047] S102:如果为第一预设值,则将存储在预设数据存储空间中的数据通过低频信息通道发送出去。 [0048] 当上位机检测到发送状态标志位g_MessageSendEnble为第二预设值时,则将需要发送的数据写入光模块内的预设数据存储空间中,并且将该标志位设为第一预设值,以使能光模块进行数据发送,并在之后不断轮询该发送状态标志位用于确定数据是否被正确发送。其中,光模块中多个用于存储数据的寄存器组成上述预设数据存储空间,当然,上述预设数据存储空间还可以为某一个寄存器中开辟的用于存储数据的区域。 [0049] 进一步的,因为数据并不是每次都填充满寄存器中所有的位置,本实施例还在光模块内还设有发送数据长度寄存器g_SendLength,上位机将本次需要发送的数据长度写入该寄存器。同时,由于数据有默认的起始位置,因此,利用默认起始位置及数据长度一起表征数据在寄存器中的存储位置,可以有效保证数据传输的正确性。 [0050] 然后,光模块查询到该发送状态标志位g_MessageSendEnble为第一预设值,则将存储在该预设数据存储空间中所存储数据通过低频信息通道发送给接收端光模块,在光模块发送数据期间,发送状态标志位g_MessageSendEnble保持为第一预设值;需要说明的是,在实际应用中,光模块所发送的数据还可以是,根据上位机写入的初始数据,光模块进行相应处理后,所得到的数据。另外,当光模块内设有数据长度寄存器g_SendLength时,则根据发送数据长度以及数据默认起始位置,将预设数据存储空间中的数据通过低频消息通道发送出去。 [0051] 另外,所发送数据的编码格式可以包括数据帧头、数据长度、命令代号、有效数据、校验和以及数据帧尾。接收端根据数据长度可以指示接收端上位机按照该长度值读取光模块寄存器中所存储的数据;利用命令代号可以指示本次发送数据的用途;接收端根据校验和可以校验所接收的数据包中的有效数据的正确性。 [0052] S103:判断是否接收到所述数据已被读取的响应消息。 [0053] 本实施例以发送的数据被接收端光模块所接入的上位机(可以简称为接收端上位机)读取,以实现接收端系统升级或上报数字诊断信息等功能为例进行介绍。其中,为使接收端光模块可以通知其所接入的上位机读取光模块通过低频消息通道所接收的数据,在接收端光模块中设置接收状态标志位g_MessageReceState。当接收端光模块通过低频信息通道接收到数据,并且对数据校验正确后,则将接收状态标志位设为第一预设值、如置1接收状态标志位g_MessageReceState,用于告知接收端上位机已经接收到了新的数据,同时还可以向发送端回传数据已被正确接收的响应消息。 [0054] 进一步的,接收端上位机可以通过轮询的方式查询到该接收状态标志位被设为第一预设值后,会立马读取该次数据,并在读取完成后将该接收状态标志位由第一预设值改为第二预设值。该接收状态标志位由第一预设值改为第二预设值的操作,会激发接收端光模块向发送端光模块回送本次数据已被读取的响应消息。 [0055] 如果接收到接收端光模块发送的数据已被读取的响应消息,则执行步骤S104。否则,则执行步骤S105。 [0056] S104:如果接收到所述数据已被读取的响应消息,则将所述发送状态标志位由第一预设值改为第二预设值。 [0057] 光模块将发送状态标志位由第一预设值改为第二预设值,用于告知其所接入的上位机本次数据发送完成,可以进行下一次的数据发送。 [0058] 进一步的,为了防止长时间的等待接收端光模块回传消息,本实施例还设置光模块内部主动清零机制当然,还可以设置其它清零机制、如由上位机清零。其中,模块内部主动清零可以包括如下步骤: [0059] S105:如果未接收到所述数据已被读取的响应消息,则判断所述数据的已发送时长是否超过预设时长阈值。 [0060] 其中,该预设时长阈值大于接收端的光模块用于数据接收校验并回传消息所需的时间。当将存储在预设数据存储空间中的数据通过低频信息通道发送出去之后,则开始进行计时,并等待接收端光模块回传的数据已被读取的响应消息,如果超过预设时长阈值,还未接收到数据已被读取的响应消息,则执行步骤S160,否则,则继续等待接收端光模块回传消息。 [0061] S106:如果超过预设时长阈值,将所述发送状态标志位由第一预设值改为第二预设值。另外,还可以生成接收端故障的标识信息。 [0062] 其中,为了便于对接收端故障的区分,以采取相应的处理措施。本实施例设置当光模块接收到接收端回传的数据已被接收端光模块正确接收的响应消息,但未接收到数据已被接收端上位机读取的响应消息,则可以生成用于指示接收端的上位机故障的第一标识信息,然后,发送端光模块所接入的上位机接收到该标识信息后,可以使能数据的再次发送或者生成远端上位机故障的通知等。另外,如果光模块一直未接收到接收端光模块回传的发送数据已被正确接收的响应消息,则可以发送状态标志位由第一预设值改为第二预设值,同时,生成用于指示光模块之间发送失败的第二标识信息,然后,发送端上位机接收到该标识信息后,可以采取使能数据的再次发送等措施。 [0063] 对应于上述两种响应消息,上述步骤S105中的预设时长阈值则可以由用于等待接收端光模块回传数据已被接收端光模块正确接收的响应消息的第一预设时长阈值,以及,用于等待在接收到数据已被接收端光模块正确接收的响应消息之后,用于等待接收端光模块回传的数据已被读取的响应消息第二预设时长阈值两部分构成。进一步的,如果设置在数据发送失败后,采用数据重传机制,则上述第一预设时长阈值由N个预设子时长阈值构成,其具体个数根据重传次数的上限值确定,每一个预设子时长阈值的具体时长则根据发送数据以及回传数据被正确接收所需要的时间设定。 [0064] 本实施例通过在发送端光模块内部建立一个可与其所接入的上位机交互的、用于控制数据发送的标志位,即发送状态标志位。其中,当该发送状态标志位被上位机改为第一预设值时,则发送端光模块启动数据发送功能,将发送端上位机写入在预设数据存储空间中的数据通过低频信息通道发送给接收端光模块;然后,当确认发送的数据已被接收端上位机读取时,则将该发送状态标志位由第一预设值改为第二预设值,以通知发送端上位机可以使能进行下一次数据的发送。因此,本实施例利用在发送端光模块内所设置的发送状态标志位,不仅可以避免发送的数据未被接收端上位机读取之前就被新数据覆盖的问题,还可以实现上报接收端上位机是否已正确读取数据的功能,进而使得接收端光模块不仅受控于其接入的上位机还可以实现对其远程操控,同时还可以通过对接收端光模块的远程操控实现对其接入的上位机的远程操控。 [0065] 进一步的,在光模块之间传输数据时,可能会出现光模块临时掉电、网络问题等原因导致本次数据发送失败的情况,除了上述实施例采取的光模块所接入的上位机使能数据重传外,本实施例还提供了建立在光模块内部的数据重传机制。图9为本实施例提供的另一种数据发送方法的基本流程示意图。如图9所示,该方法具体包括如下步骤: [0066] S201:查询发送状态标志位是否已被改为第一预设值。 [0067] 其中,在光模块的寄存器中设置发送状态标志位g_MessageSendEnble。如果查询到发送状态标志位已被上位机改为第一预设值,则执行步骤S202,以启动数据重传机制;否则,则可以在预设时间间隔后继续查询该发送状态标志位。 [0068] S202:如果为第一预设值,将数据重传标志位由第四预设值改为第三预设值。 [0069] 其中,在光模块的寄存器中设置数据重传标志位g_SendMessageAble,当发送状态标志位g_MessageSendEnble被上位机改为第一预设值时,则光模块会将该数据重传标志位由第四预设值改为第三预设值、如置1,以启动数据重传机制。 [0070] S203:将存储在预设数据存储空间中的数据通过低频信息通道发送出去。 [0071] 上位机可以将需要发送的数据写入光模块内的预设数据存储空间,还可以将发送数据长度写入光模块内的发送数据长度寄存器g_SendLength中。光模块将数据重传标志位设为第三预设值后,将该预设数据存储空间中所存储数据通过低频信息通道发送给接收端光模块。当光模块内设有数据长度寄存器g_SendLength时,则根据发送数据长度以及数据默认起始位置,将预设数据存储空间中的数据通过低频消息通道发送出去。 [0072] 同时,本实施例还在光模块内部设置发送次数寄存器sendcounter和发送间隔周期寄存器Runcounter,其中,光模块初始上电时,这两个寄存器均为默认值0。当光模块每次将上述数据通过低频消息通道发送后,则发送次数寄存器sendcounter的计数值会累加1,同时,发送间隔周期寄存器Runcounter相当于计时器开始计时,其每经过一个软件周期,该寄存器计数值就会加1,并且,本实施例设置在该寄存器的计数值加1之前会先查看数据重传标志位是否为第三预设值,如果是,才会将计数值加1,否则,则可以将该寄存器的计数值归零。当然,也可以在其计数值将要达到预设阈值时,先查看数据重传标志位是否为第三预设值,只是上述在每个软件周期查看数据重传标志位方式与该方式相比,每个软件周期查看数据重传标志位方式,可以更早的使其可以在下次使用时处于初始化状态,并更早的结束数据重传。 [0073] S204:判断是否在预设时间内接收到所述数据已被接收的响应消息。 [0074] 其中,可以利用Runcounter寄存器的计数值,当该寄存器值未达到预设阈值(该预设阈值对应的时间大于接收端用于数据接收校验和回传数据已被接收消息所用的时间)时,接收到接收端光模块发送的所述数据已被接收的响应消息,则执行步骤S205;否则,则若达到预设阈值,还未接收到接收端光模块发送的所述数据已被接收的响应消息,则执行步骤S209。 [0075] 需要说明的是,本步骤中的预设时间也可以不利用Runcounter寄存器所对应设置的预设阈值,如利用光模块MCU中的定时器进行计时,并对应设定一个时间阈值,其中,如果到达设定的时间阈值时还未接收到数据已被接收的响应消息,则先查看查看数据重传标志位是否为第三预设值,如果是,则执行步骤S209,只是该方式与设置Runcounter寄存器方式相比,需要MCU的数据处理量更大。 [0076] S205:如果接收到所述数据已被接收的响应消息,则将所述数据重传标志位由第三预设值改为第四预设值。 [0077] 当收到接收端光模块回传的数据已被接收的响应消息后无需校验消息内容,就可以判断出接收端模块已经接收到了正确数据,进而将数据重传标志位由第三预设值改为第四预设值,以结束数据重传,同时还可以将Runcounter、sendcounter寄存器进行清,使其可以在下次使用时处于初始化状态。然后,执行步骤S206,等待接收端光模块回传数据已被读取的响应消息。 [0078] S206:判断是否接收到所述数据已被读取的响应消息。 [0079] 其中,如果是,则执行步骤S207,否则,则执行步骤S208。 [0080] S207:如果接收到所述数据已被读取的响应消息,则将所述发送状态标志位由第一预设值改为第二预设值。 [0081] S208:如果超过预设时间未接收到所述数据已被读取的响应消息,将发送状态标志位由第一预设值改为第二预设值,并生成接收端上位机故障的信息。 [0082] S209:如果未接收到所述数据已被接收的响应消息,则判断已发送所述数据的次数是否未超过预设次数阈值。 [0083] 如果是,则执行步骤S203。否则,则执行步骤S210。 [0084] S210:如果已发送所述数据的次数超过预设次数阈值,则将所述数据重传标志位由第三预设值改为第四预设值、将所述发送状态标志位由第一预设值改为第二预设值。 [0085] 表明在发送端光模块重复发送数据多次后,接收端光模块依然没有接收到正确数据,表明该次光模块之间的数据传输(又称模块底层数据传输)彻底失败,进而将数据重传标志位g_SendMessageAble由第三预设值改为第四预设值、将发送状态标志位g_MessageSendEnble由第一预设值改为第二预设值以及将发送次数寄存器sendcounter和Runcounter寄存器的计数值归零,用于结束光模块的数据重传机制并使其内部各寄存器处于初始化状态。 [0086] 进一步的,本实施例还在寄存器中设置数据发送失败标志位g_ReSendFail,当发送端重复发送数据消息多次后,接收端光模块依然没有接收到正确数据时,即未接收到接收端返回的数据被正确接收的消息,还则将该数据发送失败标志位g_ReSendFail设为第一预设值,用于告知发送端上位机数据发送失败。同时,发送端上位机会轮询查询该标志位的数值,当检测到该标志位第一预设值时,可以将该标志位第一预设值改为第二预设值、如由1置0,并重新返回步骤S201,由发送端上位机发起数据重传。 [0087] 本实施例通过建立光模块内部的数据重传机制,可在模块层面实现数据传输的校验、错误重传、传输失败上报功能,进而减轻由上位机实现该机制时的负担,并提高了整体系统利用消息通道传输数据时的效率。 [0088] 基于与上述方法同样的发明构思,本实施例还提供了一种数据发送装置,该装置主要包括处理器和存储器,其中:存储器用于存储程序代码;处理器,用于读取所述存储器中存储的程序代码,并执行:查询发送状态标志位是否为第一预设值;如果为第一预设值,则将存储在预设数据存储空间中的数据通过低频信息通道发送出去;判断是否接收到所述数据已被读取的响应消息;如果接收到所述数据已被读取的响应消息,则将所述发送状态标志位由第一预设值改为第二预设值;如果未接收到所述数据已被读取的响应消息,则判断所述数据的已发送时长是否超过预设时长阈值;如果超过预设时长阈值,将所述发送状态标志位由第一预设值改为第二预设值,并生成接收端故障的标识信息的数据发送方法。 [0089] 或者,处理器可以执行:查询发送状态标志位是否为第一预设值;如果为第一预设值,将数据重传标志位由第四预设值改为第三预设值;将存储在预设数据存储空间中的数据通过低频信息通道发送出去;判断是否在预设时间内接收到所述数据已被接收的响应消息;如果接收到所述数据已被接收的响应消息,则将所述数据重传标志位由第三预设值改为第四预设值;如果未接收到所述数据已被接收的响应消息,则判断已发送所述数据的次数是否未超过预设次数阈值;如果是,则再次将所述数据通过低频信息通道发送出去的数据发送方法。 [0090] 本实施例还提供了一种光模块,其具体结构可以参考图3至图7中的结构以及对应的文字描述,同时,该其MCU中设有上述实施例提供的数据发送装置。 [0091] 需要说明的是,本实施例提高的发送端光模块、接收端光模块以及其对应的上位机,只是从使能数据发送的角度所提出的,在实际使用中,一个光模块既可以作为发送端光模块、也可以作为接收端光模块使用。另外,不同的标志位的第一预设值和第二预设值其具体表示方式可以相同也可以不同。 [0093] 本领域技术人员在考虑说明书及实践这里发明的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未发明的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。 |