一种邮件的数据结构及其发送、接收方法与流程

文档序号:18981172发布日期:2019-10-29 03:46阅读:1350来源:国知局
一种邮件的数据结构及其发送、接收方法与流程
本申请属于数据传输
技术领域
,具体涉及一种邮件的数据结构及其发送、接收方法。
背景技术
:基于uart(通用异步收发器)的串行总线,可双向通信,其具有结构简单、传输距离远、成本低、可靠性高等优点,大量的单片机、dsp、arm、fpga中都集成了uart,是电子系统中最常见的通讯方式。串行总线通讯占用i/o口少、电路简单,能有效缩小硬件体积、降低成本,基于uart的rs-232、rs-422等标准常用于计算机和外设之间或嵌入式系统之间的通讯,广泛应用于医疗、电信、航天航空、汽车制造、办公、家电等多种领域。rs-232是美国电子工业联盟(eia)制定的异步串行通信接口标准。rs-232标准规定了机械特性、电气特性、信号功能及传送过程,被广泛的用于计算机串行接口外设连接,传输距离可达15米,最高波特率可达200kbps。rs-422与rs-232标准类似,主要以差分传输方式替代了rs-232的单端传输方式,可获得更远距离、更快速率、更抗干扰的通讯能力,传输距离延长到1200米,短距离下最高速率可达10mbps。在当前应用中,rs-422与rs-232标准硬件简单、成本低廉、使用方便,但它们收发和纠错机制仅针对单个字符如何进行传输,当用户需要传输自己的数据块时,均需要另行开发自己的高层通讯协议,负责数据块的发送、接收、校验、纠错处理,不同的应用因数据内容的不同往往需要进行不同的设计,导致开发和调试工作大量低水平重复,浪费了人力物力。鉴于现有技术的上述缺陷提出本申请。技术实现要素:本申请的目的是提供邮件的数据结构及其发送、接收方法,以于克服或减轻现有技术至少一方面的缺陷。本申请的技术方案是:一方面提供一种邮件的数据结构,包括:同步头位,位于邮件传输单元的头部,用以存储同步头,以标识邮件的起始位置;邮箱地址位,用以存储邮箱地址,以标识发送邮件的发件箱的地址,及接收邮件的收件箱的地址;传输控制字及邮件序号位,用以存储传输控制字,以标识邮件的传输特性;以及存储邮件序号,以标识邮件被对应的邮箱发送时的序号;邮件正文位,用以存储邮件的正文;邮件正文长度位,用以存储邮件正文长度,以标识邮件的正文的长度;校验和位,位于邮件传输单元的末尾,用以存储校验和,以标识邮件除自身外按位累加之和。根据本申请的至少一个实施例,传输特征包括:平信,该传输特性的邮件经对应的邮箱发送后,不需要回执;挂号信,该传输特性的邮件经对应的邮箱发送后,需要回执。根据本申请的至少一个实施例,同步头位占用两个字符;邮箱地址为占用一个字符;传输控制字及邮箱序号位占用一个字符;邮件正文长度数据位占用一个字符;校验和位占用一个字符;邮件的正文长度不超过58字节。根据本申请的至少一个实施例,传输控制字及邮箱序号位占用的字符的最高位用以存储传输控制字;传输控制字及邮箱序号位占用的字符的后四位用以存储邮件序号;传输控制字及邮箱序号位占用的字符的其余三位为预留位。根据本申请的至少一个实施例,预留位用以存储邮件的拼接标志。另一方面提供一种邮件的发送方法,包括以下步骤:步骤一、响应于待发送邮件的邮箱地址,检测与该邮箱地址对应的发件箱的状态,其中:若该发件箱的状态为空闲或者是应答失败,则编写待发送的邮件的邮件序号,将该邮件序号写入至传输控制字及邮箱序号位的后四位,将待发送的邮件的正文写入至邮件正文位,计算待发送的邮件的校验和,并将该校验和写入至校验和位,并将该发件箱的状态变更为待发送;若该发件箱的状态为待发送,则判断其中的邮件的传输特性,若其中的邮件的传输特性为平信,则编写待发送邮件的邮件序号,将该邮件序号写入至传输控制字及邮箱序号位的后四位,将待发送邮件的正文写入至邮件正文位,计算待发送邮件的校验和,将该校验和写入至校验和位,并将该发件箱的状态变更为待发送;若该发件箱中的邮件的传输特性为挂号信,则向用户返回发件箱满的标识;若该发件箱的状态为等待应答,则向用户返回发件箱满的标识;步骤二、检测各个邮箱中的发件箱的状态,其中:若检测到发件箱的状态为待发送,则判断fifo的空间是否足够,若不足,则进行等待;若fifo的空间足够,则将该发件箱中的邮件移动至fifo中,判断被移动至fifo的邮件的传输特性,若被移动至fifo的邮件的传输特为平信,则将该发件箱的状态变更为空闲,若被移动至fifo的邮件的传输特为挂号信,则将该发件箱的状态变更为等待应答,并启动一个mms的定时器;若检测到发件箱的状态为等待应答,则判断mms计时是否已满,若未满,则继续等待;若mms计时已满,则将发送超时次数加1,判断发送超时次数是否大于n,若大于n,则将该发件箱的状态变更为应答失败,将发送超时次数置为0,若发送超时次数不大于n,则在fifo的空间足够时,将该发件箱中的邮件移动至fifo中,重新启动mms的定时器。根据本申请的至少一个实施例,m=100。根据本申请的至少一个实施例,n=10。又一方面提供一种邮件的接收方法,包括以下步骤:步骤一、将在fifo中检测到的同步头对应的邮件标记为待接收邮件,根据待接收邮件的正文长度将其保存至接收邮件缓存中;步骤二、对邮件缓存中的各个待接收邮件进行计算校验和,若校验不正确,则将该待接收邮件抛弃;步骤三、若校验正确,则判断对应的待接收邮件的邮件地址是否有效,若无效,则将该待接收邮件抛弃;步骤四、若待接收邮件的邮件地址有效,则判断该待接收邮件是否是回执邮件,若是,则判断该回执邮件的邮件序号与与其邮件地址对应的收件箱中的邮件的邮件序号是否相同,若相同,则将该发件箱的状态变更为待发送,若不同,则将该回执邮件抛弃;步骤五、若待接收邮件不是回执邮件,则判断该待接收邮件的邮件序号与与其邮件地址对应的收件箱中的邮件的邮件序号是否相同,若相同,则判断该待接收邮件的传输特性,若该待接收邮件的传输特性是挂号信,则该待接收邮件的邮件序号对应的发件箱向对方对应的收件箱发送回执邮件,若该待接收邮件的传输特性是平信,则将该待接收邮件抛弃;步骤六、若待接收邮件的邮件序号与与其邮件地址对应的发件箱中的邮件的邮件序号不相同,则判断与该待接收的邮件地址对应的收件箱的状态是否是空闲,若是,则将待接收邮件移动至该收件箱,将该收件箱的状态变更为待读取;步骤七、若与待接收的邮件地址对应的收件箱的状态不是空闲,则判断该收件箱中的邮件的传输特性,若该收件箱中邮件的传输特性是挂号信,则抛弃该待接收邮件;步骤八、若收件箱中的邮件的传输特性是平信,则将待接收邮件移动至该收件箱,将该收件箱的状态变更为待读取;步骤九、响应于读取命令,将对应状态为带读取的收件箱中的邮件的正文移动至邮件读取缓存区,将该收件箱的状态变更为空闲,判断该邮件的传输特性,若该邮件的传输特性是挂号信,则该邮件的邮件地址对应的发件箱向对方对应的收件箱发送回执邮件。根据本申请的至少一个实施例,回执邮件的邮件正文长度为0。附图说明图1是本申请实施例提供的邮件发送方法的流程图;图2是本申请实施例提供的邮件接收方法的流程图;图3是本申请实施例提供的网络结构系统的示意图。具体实施方式下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关申请,而非对该申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。需要说明的是,在本申请的描述中,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方向或位置关系的术语是基于附图所示的方向或位置关系,这仅仅是为了便于描述,而不是指示或暗示所述装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,还需要说明的是,在本申请的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域技术人员而言,可根据具体情况理解上述术语在本申请中的具体含义。下面结合附图1至图3对本申请做进一步详细说明。一方面提供一种邮件的数据结构,包括:同步头位,位于邮件传输单元的头部,用以存储同步头,以标识邮件的起始位置;邮箱地址位,用以存储邮箱地址,以标识发送邮件的发件箱的地址,及接收邮件的收件箱的地址;传输控制字及邮件序号位,用以存储传输控制字,以标识邮件的传输特性;以及存储邮件序号,以标识邮件被对应的邮箱发送时的序号;邮件正文位,用以存储邮件的正文;邮件正文长度位,用以存储邮件正文长度,以标识邮件的正文的长度;校验和位,位于邮件传输单元的末尾,用以存储校验和,以标识邮件除自身外按位累加之和。对于上述实施例公开的邮件结构,本领域技术人员可以理解的是,其被设计用以存储邮件数据,该种邮件数据可作为数据传输的基本单位,其设置邮件正文长度位用以存储邮件正文长度,以此能够在用户在发起一次通讯时灵活的指定邮件正文的长度,根据邮件正文长度进行动态调整,从而能够避免携带多余无效数据造成的时间浪费及其内存资源的损耗;此外,上述邮件结构设置邮箱地址位,用以存储邮箱地址,通讯协议据此可为每个有效的邮箱地址在邮件数据传输的终端,均创建并分配一个发件箱及一个收件箱,用以处理邮件数据的发送和接收任务,邮件数据的传输终端,在邮件数据的发送过程中,可将邮件在对应的发件箱中保存,在邮件数据的接收过程中,可将邮件在对应的收件箱保存,邮件数据的发送及接收过程相互独立、互不干扰,方便用户使用。在一些可选的实施例中,传输特征包括:平信,该传输特性的邮件经对应的邮箱发送后,不需要回执;挂号信,该传输特性的邮件经对应的邮箱发送后,需要回执。对于上述实施例公开的邮件结构,本领域技术人员可以理解的是,其设置用以存储传输控制字的位,以将邮件的传输特性进行区分,从分别对其设计不同的发送及接收过程,以平衡邮件数据在传输过程中对资源的占用以及纠错保障。上述实施例公开的邮件结构,将其存储的邮件数据的传输特性分为:平信,该传输特性的邮件经对应的邮箱发送后,不需要回执,即其发送后不需要接收方进行应答是否收到,在一定程度上是可丢弃数据,可对应于周期性发送的数据,该种数据丢失一次并不影响使用,允许在传输过程中出现偶发的错误导致接收方无法收到,不对其设计发送-应答机制,对其“发送后不管”简化用户的使用;挂号信,该传输特性的邮件经对应的邮箱发送后,需要回执,即发送后需要等待接收方方的回执来确认是否收到,是在一定程度上具有重要性的数据,设计相应的发送-应答机制,以尽可能克服其在传输过程中因偶发的错误致使的数据发送失败,即使最终不能够发送成功,也能够向用户返回相应的标识,以提示用户能够进行相应的处理。在一些可选的实施例中,同步头位占用两个字符;邮箱地址为占用一个字符;传输控制字及邮箱序号位占用一个字符;邮件正文长度数据位占用一个字符;校验和位占用一个字符;邮件的正文长度不超过58字节。在一些可选的实施例中,传输控制字及邮箱序号位占用的字符的最高位用以存储传输控制字;传输控制字及邮箱序号位占用的字符的后四位用以存储邮件序号;传输控制字及邮箱序号位占用的字符的其余三位为预留位。在一些可选的实施例中,预留位用以存储邮件的拼接标志。对于上述实施例公开的邮件结构,本领域技术人员可以理解的是,其提供的是一种长度可变的邮件存储结构,更具体的邮件存储结构参见下表:以上实施例公开的邮件存储的邮件数据,可通过如图3所示的网络结构系统完成传输(发送、接收),图3所示的网络结构系统分为3层,分别为:物理层,管理硬件,并向处理层提供调用接口,用于字节流发送与接收;处理层,处理邮件收发,并向应用层提供调用接口,用于邮件可靠、顺序、无错地传输;应用层,处理用户数据收发,并向用户提供调用接口,是用户与邮箱系统的交互接口。可为图3中所示的网络结构系统的发件箱及收件箱可定义如下表所示的工作状态:发件箱状态说明空闲发件箱内无邮件(上一个邮件已发送成功)待发送发件箱中有邮件但尚未开始通过总线发送等待应答挂号信已发送,等待回执应答失败挂号信多次重发后仍未收到对方回执收件箱状态空闲收件箱内无邮件待读取收件箱中有邮件另一方面提供一种邮件的发送方法,包括以下步骤:步骤一、响应于待发送邮件的邮箱地址,检测与该邮箱地址对应的发件箱的状态,其中:若该发件箱的状态为空闲或者是应答失败,则编写待发送的邮件的邮件序号,将该邮件序号写入至传输控制字及邮箱序号位的后四位,将待发送的邮件的正文写入至邮件正文位,计算待发送的邮件的校验和,并将该校验和写入至校验和位,并将该发件箱的状态变更为待发送;若该发件箱的状态为待发送,则判断其中的邮件的传输特性,若其中的邮件的传输特性为平信,则编写待发送邮件的邮件序号,将该邮件序号写入至传输控制字及邮箱序号位的后四位,将待发送邮件的正文写入至邮件正文位,计算待发送邮件的校验和,将该校验和写入至校验和位,并将该发件箱的状态变更为待发送;若该发件箱中的邮件的传输特性为挂号信,则向用户返回发件箱满的标识;若该发件箱的状态为等待应答,则向用户返回发件箱满的标识;步骤二、检测各个邮箱中的发件箱的状态,其中:若检测到发件箱的状态为待发送,则判断fifo的空间是否足够,若不足,则进行等待;若fifo的空间足够,则将该发件箱中的邮件移动至fifo中,判断被移动至fifo的邮件的传输特性,若被移动至fifo的邮件的传输特为平信,则将该发件箱的状态变更为空闲,若被移动至fifo的邮件的传输特为挂号信,则将该发件箱的状态变更为等待应答,并启动一个mms的定时器;若检测到发件箱的状态为等待应答,则判断mms计时是否已满,若未满,则继续等待;若mms计时已满,则将发送超时次数加1,判断发送超时次数是否大于n,若大于n,则将该发件箱的状态变更为应答失败,将发送超时次数置为0,若发送超时次数不大于n,则在fifo的空间足够时,将该发件箱中的邮件移动至fifo中,重新启动mms的定时器。在一些可选的实施例中,m=100。在一些可选的实施例中,n=10。对于上述实施例公开的邮件发送方法,本领域技术人员可以理解的是,其针对邮件发送过程中可能出现的堵塞给出了相应的处理方法,以保障邮件的发送,如下表所示:又一方面提供一种邮件的接收方法,包括以下步骤:步骤一、将在fifo中检测到的同步头对应的邮件标记为待接收邮件,根据待接收邮件的正文长度将其保存至接收邮件缓存中;步骤二、对邮件缓存中的各个待接收邮件进行计算校验和,若校验不正确,则将该待接收邮件抛弃;步骤三、若校验正确,则判断对应的待接收邮件的邮件地址是否有效,若无效,则将该待接收邮件抛弃;步骤四、若待接收邮件的邮件地址有效,则判断该待接收邮件是否是回执邮件,若是,则判断该回执邮件的邮件序号与与其邮件地址对应的发件箱中的邮件的邮件序号是否相同,若相同,则将该发件箱的状态变更为待发送,若不同,则将该回执邮件抛弃;步骤五、若待接收邮件不是回执邮件,则判断该待接收邮件的邮件序号与与其邮件地址对应的收件箱中的邮件的邮件序号是否相同,若相同,则判断该待接收邮件的传输特性,若该待接收邮件的传输特性是挂号信,则该待接收邮件的邮件序号对应的发件箱向对方对应的收件箱发送回执邮件,若该待接收邮件的传输特性是平信,则将该待接收邮件抛弃;步骤六、若待接收邮件的邮件序号与与其邮件地址对应的收件箱中的邮件的邮件序号不相同,则判断与该待接收的邮件地址对应的收件箱的状态是否是空闲,若是,则将待接收邮件移动至该收件箱,将该收件箱的状态变更为待读取;步骤七、若与待接收的邮件地址对应的收件箱的状态不是空闲,则判断该收件箱中的邮件的传输特性,若该收件箱中邮件的传输特性是挂号信,则抛弃该待接收邮件;步骤八、若收件箱中的邮件的传输特性是平信,则将待接收邮件移动至该收件箱,将该收件箱的状态变更为待读取;步骤九、响应于读取命令,将对应状态为带读取的收件箱中的邮件的正文移动至邮件读取缓存区,将该收件箱的状态变更为空闲,判断该邮件的传输特性,若该邮件的传输特性是挂号信,则该邮件的邮件地址对应的发件箱向对方对应的收件箱发送回执邮件。在一些可选的实施例中,回执邮件的邮件正文长度为0。对于上述实施例公开的邮件接收方法,本领域技术人员可以理解的是,其针对邮件接收过程中可能出现的堵塞给出了相应的处理方法,以保障邮件的接收,如下表所示:至此,已经结合附图所示的优选实施方式描述了本申请的技术方案,但是,本领域技术人员容易理解的是,本申请的保护范围显然不局限于这些具体实施方式。在不偏离本申请的原理的前提下,本领域技术人员可以对相关技术特征作出等同的更改或替换,这些更改或替换之后的技术方案都将落入本申请的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1