CN102437903A - 一种适用于智能车的多节点协调通信方法 - Google Patents
一种适用于智能车的多节点协调通信方法 Download PDFInfo
- Publication number
- CN102437903A CN102437903A CN2011102204743A CN201110220474A CN102437903A CN 102437903 A CN102437903 A CN 102437903A CN 2011102204743 A CN2011102204743 A CN 2011102204743A CN 201110220474 A CN201110220474 A CN 201110220474A CN 102437903 A CN102437903 A CN 102437903A
- Authority
- CN
- China
- Prior art keywords
- forwards
- packet
- returns
- data
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Mobile Radio Communication Systems (AREA)
Abstract
本发明涉及一种适用于智能车的多节点协调通信方法。本发明包括一个中心节点和若干普通节点,其中每个节点都是由智能车主控芯片和射频收发芯片组成。中心节点是系统的控制中心,负责为新加入的节点分配一个独立的ID和定时检测系统内其他节点状态,其他功能用户可以根据需求自行设定。普通节点在刚刚进入系统时需要向中心节点申请ID,并以此设置自己的硬件地址,以便和系统内其他节点通信。将某个节点设置成中心节点或是普通节点,需要用户指定,并保证系统内有且只有一个中心节点。本发明中新加入系统的车辆能动态的分配ID,保证不会重复,无需用户手动设置每一个节点的地址,使用方便。
Description
技术领域
本发明属于计算机应用技术领域,涉及一种适用于智能车的多节点协调通信方法。
背景技术
在智能车的调试和运行过程中,需要对小车的参数进行实时采集处理,车与车之间、车与中心节点需要通信,传输相关数据。目前许多应用领域都采用无线的方式进行短距离数据传输,这些领域涉及小型无线网络、无线抄表、门禁系统、小区传呼、工业数据采集系统、无线遥控系统、无线标签身份识别、非接触RF智能卡等。同样,无线通信适用于位置、速度不断改变的智能车。
发明内容
本发明的目的在于针对智能车在运行中实时信息的传输、以及车辆不断进入或退出系统的动态性,设计一种能够为新来车辆分配ID、定时检测车辆状态并且保证可靠数据传输的通信协议。
本发明的系统包括:一个中心节点和若干普通节点,其中每个节点都是由智能车主控芯片和射频收发芯片组成。中心节点可以看作是系统的控制中心,负责为新加入的节点分配一个独立的ID和定时检测系统内其他节点状态,其他功能用户可以根据需求自行设定。中心节点一般不用于智能车,而是管理系统内的智能车运行情况。普通节点在刚刚进入系统时需要向中心节点申请ID,并以此设置自己的硬件地址,以便和系统内其他节点通信。将某个节点设置成中心节点或是普通节点,需要用户指定,并保证系统内有且只有一个中心节点。
本发明方法包括如下步骤:
步骤1:根据用户需求,将节点设置成中心节点或者普通节点,中心节点转到步骤2,普通节点转到步骤3。
步骤2:(中心节点)
步骤2-1:将自己的地址设置为控制节点的地址,设置检测定时器,转到步骤2-2。
步骤2-2:检测是否有数据中断,收到数据中断则转到步骤2-3,否则转到步骤2-5。
步骤2-3:检查是否是数据请求,是转到步骤6,处理完成后返回步骤2-2;否则转到步骤2-4。
步骤2-4:检查是否是ID请求,是转到步骤8,处理完成后返回步骤2-2;否则丢弃数据包,直接返回步骤2-2。
步骤2-5:检查是否有数据需要发送,有转到步骤2-6,否则转到步骤2-7。
步骤2-6:发送一个数据包转到步骤4,发送多个数据包转到步骤5,处理完成后返回步骤2-2。
步骤2-7:检测是否收到检测定时中断,是则进行车辆检测,更新车辆状态信息完成后返回步骤2-2,否则直接返回步骤2-2。
步骤3:(普通节点)
步骤3-1:转到步骤7,申请ID成功后转到步骤3-2,否则根据用户需求进行相应操作或停止运行。
步骤3-2:检测是否有数据中断,收到数据中断则转到步骤3-3,否则转到步骤3-5。
步骤3-3:检查是否是数据请求,是转到步骤6,处理完成后返回步骤3-2;否转到步骤3-4。
步骤3-4:检查是否是中心节点的检测请求,是则回复确认包,处理完成后返回步骤3-2;否则丢弃数据包,直接返回步骤3-2。
步骤3-5:检查是否有数据需要发送,有转到步骤3-6,否则转到步骤3-2。
步骤3-6:发送一个数据包转到步骤4,发送多个数据包转到步骤5,处理完成后返回步骤3-2。
步骤4:(发送一个数据包)
步骤4-1:将控制信息和数据写入数据包,计数器counter初始化为10,转到步骤4-2。
步骤4-2:向目的节点发送数据包,转到步骤4-3。
步骤4-3:在规定的时间间隔内收到数据包则转到步骤4-4,否则转到步骤4-6。
步骤4-4:检查数据包是否来自目的节点,是转到步骤4-5,否则发送拒绝信息,转到步骤4-3。
步骤4-5:检查数据包的控制信息,如果目的节点确认发送成功则发送成功,否则发送失败,返回发送状态。
步骤4-6:counter减一,如果counter大于0,返回步骤4-2,否则发送失败,返回发送状态。
步骤5:(发送多个数据包)
步骤5-1:将控制信息写入数据包,计数器counter初始化为10,转到步骤5-2。
步骤5-2:向目的节点发送数据包,转到步骤5-3。
步骤5-3:在规定的时间间隔内收到数据包则转到步骤5-4,否则转到步骤5-6。
步骤5-4:检查数据包是否来自目的节点,是转到步骤5-5,否则发送拒绝信息,转到步骤5-3。
步骤5-5:检查数据包的控制信息,如果目的节点确认发送,则转到步骤5-7;否则发送失败,返回发送状态。
步骤5-6:counter减一,如果counter大于0,返回步骤5-2,否则发送失败,返回发送状态。
步骤5-7:counter设置为10,start_num设置为0,转到步骤5-8。
步骤5-8:分包发送序号在start_num以后的数据转到步骤5-9。
步骤5-9:在规定时间内收到数据包转到步骤5-10,否则转到步骤5-13。
步骤5-10:数据包是否来自目的节点,是则转到步骤5-11,否则发送拒绝信息,转到步骤5-9。
步骤5-11:如果接收方确认发送成功,则发送成功,返回发送状态;否则转到步骤5-12。
步骤5-12:根据目的节点的回复,设置start_num,转到步骤5-8。
步骤5-13:counter减一,如果counter大于0,返回步骤5-8,否则发送失败,返回发送状态。
步骤6:(接收数据)
步骤6-1:检查缓冲区状态,如果缓冲区加锁,回复发送方一个拒绝包,返回上一级,否则转到步骤6-2。
步骤6-2:检查要接收多少个数据包,接收一个数据包转到步骤6-3,否则转到步骤6-4。
步骤6-3:回复发送节点,接收成功,将数据保存到缓冲区,缓冲区加锁,data_ready置为1,返回上一级。
步骤6-4:回复发送节点,确认可以发送,转到步骤6-5。
步骤6-5:设置counter为10,转到步骤6-6。
步骤6-6:在规定的时间间隔内收到数据包,转到步骤6-7,否则转到步骤6-11。
步骤6-7:检查是否是发送方发送的数据包,是则转到步骤6-8,否则发送拒绝包,转到步骤6-6。
步骤6-8:根据数据包控制字段的序号,将数据存到缓冲区相应的位置,转到步骤6-9。
步骤6-9:判断是否收到全部数据,是则转到步骤6-10,否则返回步骤6-6。
步骤6-10:回复发送方,确认收到全部数据,将缓冲区加锁,将data_ready置1,接收成功,返回上一级。
步骤6-11:counter减一,如果counter大于0,向发送方发送需要重新发送的首个字节的序号,转到步骤6-6;否则接受失败,返回上一级。
步骤7:(申请ID)
步骤7-1:检查自己是否是初始节点,是则转到步骤7-2,否则设置失败,返回申请状态。
步骤7-2:将counter置为10,转到步骤7-3。
步骤7-3:向中心节点发送ID申请。
步骤7-4:在规定的时间内收到数据中断则转到步骤7-5,否则转到步骤7-8。
步骤7-5:判断是否是中心节点的回复,是则转到步骤7-6,否则回复一个拒绝包,返回步骤7-4。
步骤7-6:判断中心节点是否同意设置ID,是则转到步骤7-7,否则设置失败,返回设置状态。
步骤7-7:根据收到的数据包设置自己的地址,设置完成后向中心节点回复确认包,返回设置状态。
步骤7-8:counter减一,如果counter大于0,转到步骤7-3;否则发送失败,返回发送状态。
步骤8:(回复ID)
步骤8-1:检查自己是不是中心节点,是则转到步骤8-2;否则发送拒绝包,返回上一级。
步骤8-2:检查系统中车辆数有没有超过限制,是则拒绝申请方的申请,返回上一级;否则转到步骤8-3。
步骤8-3:counter设为10,根据系统内车辆状态确定新来节点的ID为new_ID,转到步骤8-4。
步骤8-4:向新来节点发送ID数据,转到步骤8-5。
步骤8-5:在规定的时间内收到数据包则转到步骤8-6,否则转到步骤8-7。
步骤8-6:检查数据包是否是ID是new_ID的节点发送的,是则表明ID设置成功,返回上一级,否则发送拒绝包,转到步骤8-5。
步骤8-7:counter减一,如果counter大于0,转到步骤8-4,否则设置失败,返回上一级。
相对于现有技术,本发明的有益效果:
新加入系统的车辆能动态的分配ID,保证不会重复,无需用户手动设置每一个节点的地址,使用方便。
通过几次握手保证了数据的可靠传输,避免了无线传输过程中的数据丢失。
中心节点定期进行车辆状态监测,随时更新系统内车辆状态,删除退出系统的车辆,可以减少不必要的通信。
使用缓冲区暂存数据并对其加锁,可以不影响用户的其他操作,只需要在空闲的时候去查看缓冲区状态即可。
中心节点不仅能为新来节点分配ID,监测系统内车辆状态,用户还可以根据需要,使之记录道路信息,对普通节点发出命令,从而控制系统的车流量。
附图说明
图1是本发明主流程图。
图2是中心节点工作流程图。
图3是普通节点工作流程图。
图4是发送方发送一个数据包的流程图。
图5是发送方发送多个数据包的流程图。
图6是接收方接收一个数据包的流程图。
图7是接收方接收多个数据包的流程图。
图8是新加入的节点申请ID流程图。
图9是中心节点回复ID的流程图。
具体实施方式
以下结合附图对本发明作进一步说明。
系统所采用的收发芯片是Nordic公司推出的无线收发一体芯片nRF2401,其具有外围电路简单、通信速率高、通信质量稳定可靠、成本低、开发周期短等优点。nRF2401具有两种收发模式,其中ShockBurstTM模式有三大好处:尽量节能;低的系统费用(低速微处理器也能进行高速射频发射);数据在空中停留时间短,抗干扰性高。同时还能减少软件开发周期。本协议采用nRF2401的ShockBurstTM模式,但是该模式下数据包的长度固定,一经配置就不方便改变,所以芯片每次收发以数据包为单位。
在此协议中,通信可以分成如下四种方式:
(1)发送数据,数据长度较小,一个数据包就可以完成发送
(2)发送数据,数据长度较大,需要发送多个数据包
(3)普通节点向中心节点申请ID
(4)控制节向普通节点发送检测信息
当发送方只需要发送一个数据包时,将数据放入该数据包,并向接受方发送请求,接收方收到数据后即进行确认;如果发送方不能收到接收方的确认回复,则继续发送,达到一定次数后仍收不到确认,即放弃发送;如果接收方此时正忙,需要接受其他节点的数据或者要发送数据,则拒绝发送方的请求。
当发送方需要发送多个包时,首先向接受方发送一个通知,告诉对方自己要发多少个包,如果接收方空闲,就立即回复,建立好连接,并拒绝其他节点的连接。接收方发出回复后,就等待发送方的数据,如果这期间收到其他节点的数据,就回复一个拒绝包,并丢弃当前接收到的数据包。接收方收到全部数据后回复一个确认包,若有数据包丢失,接收方回复一个重发申请,其中包含一个重发序号RS,发送方重发所以序号大于等于RS的数据,接收方收到全部数据后回复确认包。如果发送方没有收到确认包,则重发所有数据包。
当新加入的节点要申请一个ID时,向中心节点发送请求,中心节点收到请求后根据系统内车辆状态,回复一个ID,新节点收到这个ID后设置自己的硬件地址,然后必须再次回复一个确认包。
中心节点初始化之后,即开启定时器,每隔一定的时间,向系统内车辆发送检测信息,一旦受到回复即可认为该车正常运行,否则对于多次发送检测信息收不到回复的车辆,将其从系统中删除。
(二)数据包格式
在传输中,数据包分成三个部分,SRC_ADDR、CTL_INFO和DATA。SRC_ADDR用来保存发送方地址,CTL_INFO用来保存控制信息,DATA为有效数据,
SRC_ADDR | CTL_INFO | DATA |
在每次发送数据报的时候,首先将自己的地址写入SRC_ADDR,以便接受一方能够判断通信者的身份并且有效回复。
(三)CTL_INFO格式
CTL_INFO占两个字节。最高位REQ置位时表示此数据包是请求包;次高位置位表示此数据包为应答包;第13位OK位,当发送方要发送多个数据包,向接受方发送请求时,OK代表此时接收方空闲,同意发送方发送,当接收方收到发送方的全部数据时,OK表示数据传输成功;第12位ID,表示该数据包与ID有关,申请ID或者回复ID;第11位CHECK,用于检测某个节点是否还在系统中;10~8位保留;第7到第0位NUM,当接收方发出请求时,NUM表示要发送数据的字节数,在多个数据包的发送过程中,NUM表示当前包中的首个字节的序号,如果接收方需要发送方重新发送,NUM表示要重新发送的首个字节的序号
Bit15 | Bit14 | Bit13 | Bit12 | Bit11 | Bits10~8 | Bits7~0 |
REQ | ACK | OK | ID | CHECK | RESERVED | NUM |
(四)通信方法
在nRF2401的ShockBurstTM模式下,芯片一旦收到有效数据,就立即将DR引脚置高,可以利用该引脚触发外部中断,立即调用接收函数进行相应处理。在接收函数中,可能还需要接收数据包,所以屏蔽该中断,根据引脚状态判断数据到来。
发送方要发送数据时,则由用户自主调用发送函数进行发送。发送过程中需要接收接收方的确认,所以也要屏蔽DR引脚的中断,根据其状态判断是否有数据包收到。
当某个节点正在和其他节点连接过程中,为了不打乱时序,收到的任何请求都会拒绝,所以用户在设置普通节点和发送数据时应该注意函数的返回状态,避免不成功的设置和发送。
为了保证节点能够处理其他事务,而不是只能够进行数据传输,需要设置一个数据缓冲区buffer和一个数据标志data_ready,节点收到数据时将数据存到缓冲区,并将data_ready置1,微控制器在适当的时候去检查data_ready的状态,如果为1,则取数据。为了防止数据冲突,缓冲区需要加一把互斥锁lock,收到数据时将缓冲区加锁,并记录有效数据的长度,用户将数据取走之后解锁并清除data_ready;如果在用户取走数据之前收到其他的数据请求,由于缓冲区禁止访问,则拒绝请求。缓冲区大小不超过256字节,可以提高内存利用率,也方便处理。
结合附图进一步说明本发明方法
如图1所示,步骤1:根据用户需求,将节点设置成中心节点或者普通节点,中心节点转到步骤2,普通节点转到步骤3。
步骤2:(中心节点),参见图2
步骤2-1:将自己的地址设置为控制节点的地址,设置检测定时器,转到步骤2-2。
步骤2-2:检测是否有数据中断,收到数据中断则转到步骤2-3,否则转到步骤2-5。
步骤2-3:检查是否是数据请求,是转到步骤6,处理完成后返回步骤2-2;否则转到步骤2-4。
步骤2-4:检查是否是ID请求,是转到步骤8,处理完成后返回步骤2-2;否则丢弃数据包,直接返回步骤2-2。
步骤2-5:检查是否有数据需要发送,有转到步骤2-6,否则转到步骤2-7。
步骤2-6:发送一个数据包转到步骤4,发送多个数据包转到步骤5,处理完成后返回步骤2-2。
步骤2-7:检测是否收到检测定时中断,是则进行车辆检测,更新车辆状态信息完成后返回步骤2-2,否则直接返回步骤2-2。
步骤3:(普通节点),参见图3
步骤3-1:转到步骤7,申请ID成功后转到步骤3-2,否则根据用户需求进行相应操作或停止运行。
步骤3-2:检测是否有数据中断,收到数据中断则转到步骤3-3,否则转到步骤3-5。
步骤3-3:检查是否是数据请求,是转到步骤6,处理完成后返回步骤3-2;否转到步骤3-4。
步骤3-4:检查是否是中心节点的检测请求,是则回复确认包,处理完成后返回步骤3-2;否则丢弃数据包,直接返回步骤3-2。
步骤3-5:检查是否有数据需要发送,有转到步骤3-6,否则转到步骤3-2。
步骤3-6:发送一个数据包转到步骤4,发送多个数据包转到步骤5,处理完成后返回步骤3-2。
步骤4:(发送一个数据包)参见图4
步骤4-1:将控制信息和数据写入数据包,计数器counter初始化为10,转到步骤4-2。
步骤4-2:向目的节点发送数据包,转到步骤4-3。
步骤4-3:在规定的时间间隔内收到数据包则转到步骤4-4,否则转到步骤4-6。
步骤4-4:检查数据包是否来自目的节点,是转到步骤4-5,否则发送拒绝信息,转到步骤4-3。
步骤4-5:检查数据包的控制信息,如果目的节点确认发送成功则发送成功,否则发送失败,返回发送状态。
步骤4-6:counter减一,如果counter大于0,返回步骤4-2,否则发送失败,返回发送状态。
步骤5:(发送多个数据包)参见图5
步骤5-1:将控制信息写入数据包,计数器counter初始化为10,转到步骤5-2。
步骤5-2:向目的节点发送数据包,转到步骤5-3。
步骤5-3:在规定的时间间隔内收到数据包则转到步骤5-4,否则转到步骤5-6。
步骤5-4:检查数据包是否来自目的节点,是转到步骤5-5,否则发送拒绝信息,转到步骤5-3。
步骤5-5:检查数据包的控制信息,如果目的节点确认发送,则转到步骤5-7;否则发送失败,返回发送状态。
步骤5-6:counter减一,如果counter大于0,返回步骤5-2,否则发送失败,返回发送状态。
步骤5-7:counter设置为10,start_num设置为0,转到步骤5-8。
步骤5-8:分包发送序号在start_num以后的数据转到步骤5-9。
步骤5-9:在规定时间内收到数据包转到步骤5-10,否则转到步骤5-13。
步骤5-10:数据包是否来自目的节点,是则转到步骤5-11,否则发送拒绝信息,转到步骤5-9。
步骤5-11:如果接收方确认发送成功,则发送成功,返回发送状态;否则转到步骤5-12。
步骤5-12:根据目的节点的回复,设置start_num,转到步骤5-8。
步骤5-13:counter减一,如果counter大于0,返回步骤5-8,否则发送失败,返回发送状态。
步骤6:(接收数据)参见图6和图7
步骤6-1:检查缓冲区状态,如果缓冲区加锁,回复发送方一个拒绝包,返回上一级,否则转到步骤6-2。
步骤6-2:检查要接收多少个数据包,接收一个数据包转到步骤6-3,否则转到步骤6-4。
步骤6-3:回复发送节点,接收成功,将数据保存到缓冲区,缓冲区加锁,data_ready置为1,返回上一级。
步骤6-4:回复发送节点,确认可以发送,转到步骤6-5。
步骤6-5:设置counter为10,转到步骤6-6。
步骤6-6:在规定的时间间隔内收到数据包,转到步骤6-7,否则转到步骤6-11。
步骤6-7:检查是否是发送方发送的数据包,是则转到步骤6-8,否则发送拒绝包,转到步骤6-6。
步骤6-8:根据数据包控制字段的序号,将数据存到缓冲区相应的位置,转到步骤6-9。
步骤6-9:判断是否收到全部数据,是则转到步骤6-10,否则返回步骤6-6。
步骤6-10:回复发送方,确认收到全部数据,将缓冲区加锁,将data_ready置1,接收成功,返回上一级。
步骤6-11:counter减一,如果counter大于0,向发送方发送需要重新发送的首个字节的序号,转到步骤6-6;否则接受失败,返回上一级。
步骤7:(申请ID)参见图8
步骤7-1:检查自己是否是初始节点,是则转到步骤7-2,否则设置失败,返回申请状态。
步骤7-2:将counter置为10,转到步骤7-3。
步骤7-3:向中心节点发送ID申请。
步骤7-4:在规定的时间内收到数据中断则转到步骤7-5,否则转到步骤7-8。
步骤7-5:判断是否是中心节点的回复,是则转到步骤7-6,否则回复一个拒绝包,返回步骤7-4。
步骤7-6:判断中心节点是否同意设置ID,是则转到步骤7-7,否则设置失败,返回设置状态。
步骤7-7:根据收到的数据包设置自己的地址,设置完成后向中心节点回复确认包,返回设置状态。
步骤7-8:counter减一,如果counter大于0,转到步骤7-3;否则发送失败,返回发送状态。
步骤8:(回复ID)参见图9
步骤8-1:检查自己是不是中心节点,是则转到步骤8-2;否则发送拒绝包,返回上一级。
步骤8-2:检查系统中车辆数有没有超过限制,是则拒绝申请方的申请,返回上一级;否则转到步骤8-3。
步骤8-3:counter设为10,根据系统内车辆状态确定新来节点的ID为new_ID,转到步骤8-4。
步骤8-4:向新来节点发送ID数据,转到步骤8-5。
步骤8-5:在规定的时间内收到数据包则转到步骤8-6,否则转到步骤8-7。
步骤8-6:检查数据包是否是ID是new_ID的节点发送的,是则表明ID设置成功,返回上一级,否则发送拒绝包,转到步骤8-5。
步骤8-7:counter减一,如果counter大于0,转到步骤8-4,否则设置失败,返回上一级。
Claims (1)
1.一种适用于智能车的多节点协调通信方法,其特征在于该方法包括以下步骤:
步骤1.根据用户需求,将节点设置成中心节点或者普通节点,如果是中心节点,则转到步骤2,如果是普通节点,则转到步骤3;
步骤2.中心节点处理,包括以下步骤:
步骤2-1.将自己的地址设置为控制节点的地址,设置检测定时器,转到步骤2-2;
步骤2-2.检测是否有数据中断,收到数据中断则转到步骤2-3,否则转到步骤2-5;
步骤2-3.检查是否是数据请求,有数据请求转到步骤6,处理完成后返回步骤2-2;否则转到步骤2-4;
步骤2-4.检查是否是ID请求,有ID请求转到步骤8,处理完成后返回步骤2-2;否则丢弃数据包,直接返回步骤2-2;
步骤2-5.检查是否有数据需要发送,需要数据转到步骤2-6,否则转到步骤2-7;
步骤2-6.发送一个数据包转到步骤4,发送多个数据包转到步骤5,处理完成后返回步骤2-2;
步骤2-7.检测是否收到检测定时中断,收到检测定时中断则进行车辆检测,更新车辆状态信息完成后返回步骤2-2,否则直接返回步骤2-2;
步骤3.普通节点处理,包括以下步骤:
步骤3-1.转到步骤7,申请ID成功后转到步骤3-2,否则根据用户需求进行相应操作或停止运行;
步骤3-2.检测是否有数据中断,收到数据中断则转到步骤3-3,否则转到步骤3-5;
步骤3-3.检查是否是数据请求,是转到步骤6,处理完成后返回步骤3-2;否转到步骤3-4;
步骤3-4.检查是否是中心节点的检测请求,是则回复确认包,处理完成后返回步骤3-2;否则丢弃数据包,直接返回步骤3-2;
步骤3-5.检查是否有数据需要发送,有转到步骤3-6,否则转到步骤3-2;
步骤3-6.发送一个数据包转到步骤4,发送多个数据包转到步骤5,处理完成后返回步骤3-2;
步骤4.发送一个数据包,包括以下步骤:
步骤4-1.将控制信息和数据写入数据包,计数器counter初始化为10,转到步骤4-2;
步骤4-2.向目的节点发送数据包,转到步骤4-3;
步骤4-3.在规定的时间间隔内收到数据包则转到步骤4-4,否则转到步骤4-6;
步骤4-4.检查数据包是否来自目的节点,是转到步骤4-5,否则发送拒绝信息,转到步骤4-3;
步骤4-5.检查数据包的控制信息,如果目的节点确认发送成功则发送成功,否则发送失败,返回发送状态;
步骤4-6.counter减一,如果counter大于0,返回步骤4-2,否则发送失败,返回发送状态;
步骤5.发送多个数据包,包括以下步骤:
步骤5-1.将控制信息写入数据包,计数器counter初始化为10,转到步骤5-2;
步骤5-2.向目的节点发送数据包,转到步骤5-3;
步骤5-3.在规定的时间间隔内收到数据包则转到步骤5-4,否则转到步骤5-6;
步骤5-4.检查数据包是否来自目的节点,是转到步骤5-5,否则发送拒绝信息,转到步骤5-3;
步骤5-5.检查数据包的控制信息,如果目的节点确认发送,则转到步骤5-7;否则发送失败,返回发送状态;
步骤5-6.counter减一,如果counter大于0,返回步骤5-2,否则发送失败,返回发送状态;
步骤5-7.counter设置为10,start_num设置为0,转到步骤5-8;
步骤5-8.分包发送序号在start_num以后的数据转到步骤5-9;
步骤5-9.在规定时间内收到数据包转到步骤5-10,否则转到步骤5-13;
步骤5-10.数据包是否来自目的节点,是则转到步骤5-11,否则发送拒绝信息,转到步骤5-9;
步骤5-11.如果接收方确认发送成功,则发送成功,返回发送状态;否则转到步骤5-12;
步骤5-12.根据目的节点的回复,设置start_num,转到步骤5-8;
步骤5-13.counter减一,如果counter大于0,返回步骤5-8,否则发送失败,返回发送状态;
步骤6.接收数据,包括以下步骤:
步骤6-1.检查缓冲区状态,如果缓冲区加锁,回复发送方一个拒绝包,返回上一级,否则转到步骤6-2;
步骤6-2.检查要接收多少个数据包,接收一个数据包转到步骤6-3,否则转到步骤6-4;
步骤6-3.回复发送节点,接收成功,将数据保存到缓冲区,缓冲区加锁,data_ready置为1,返回上一级;
步骤6-4.回复发送节点,确认可以发送,转到步骤6-5;
步骤6-5.设置counter为10,转到步骤6-6;
步骤6-6.在规定的时间间隔内收到数据包,转到步骤6-7,否则转到步骤6-11;
步骤6-7.检查是否是发送方发送的数据包,是则转到步骤6-8,否则发送拒绝包,转到步骤6-6;
步骤6-8.根据数据包控制字段的序号,将数据存到缓冲区相应的位置,转到步骤6-9;
步骤6-9.判断是否收到全部数据,是则转到步骤6-10,否则返回步骤6-6;
步骤6-10.回复发送方,确认收到全部数据,将缓冲区加锁,将data_ready置1,接收成功,返回上一级;
步骤6-11.counter减一,如果counter大于0,向发送方发送需要重新发送的首个字节的序号,转到步骤6-6;否则接受失败,返回上一级;
步骤7.申请ID,具体包括以下步骤:
步骤7-1.检查自己是否是初始节点,是则转到步骤7-2,否则设置失败,返回申请状态;
步骤7-2.将counter置为10,转到步骤7-3;
步骤7-3.向中心节点发送ID申请;
步骤7-4.在规定的时间内收到数据中断则转到步骤7-5,否则转到步骤7-8;
步骤7-5.判断是否是中心节点的回复,是则转到步骤7-6,否则回复一个拒绝包,返回步骤7-4;
步骤7-6.判断中心节点是否同意设置ID,是则转到步骤7-7,否则设置失败,返回设置状态;
步骤7-7.根据收到的数据包设置自己的地址,设置完成后向中心节点回复确认包,返回设置状态;
步骤7-8.counter减一,如果counter大于0,转到步骤7-3;否则发送失败,返回发送状态;
步骤8.回复ID,具体包括以下步骤:
步骤8-1.检查自己是不是中心节点,是则转到步骤8-2;否则发送拒绝包,返回上一级;
步骤8-2.检查系统中车辆数有没有超过限制,是则拒绝申请方的申请,返回上一级;否则转到步骤8-3;
步骤8-3.counter设为10,根据系统内车辆状态确定新来节点的ID为new_ID,转到步骤8-4;
步骤8-4.向新来节点发送ID数据,转到步骤8-5;
步骤8-5.在规定的时间内收到数据包则转到步骤8-6,否则转到步骤8-7;
步骤8-6.检查数据包是否是ID是new_ID的节点发送的,是则表明ID设置成功,返回上一级,否则发送拒绝包,转到步骤8-5;
步骤8-7.counter减一,如果counter大于0,转到步骤8-4,否则设置失败,返回上一级。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110220474.3A CN102437903B (zh) | 2011-08-03 | 2011-08-03 | 一种适用于智能车的多节点协调通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110220474.3A CN102437903B (zh) | 2011-08-03 | 2011-08-03 | 一种适用于智能车的多节点协调通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102437903A true CN102437903A (zh) | 2012-05-02 |
CN102437903B CN102437903B (zh) | 2014-03-05 |
Family
ID=45985791
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110220474.3A Expired - Fee Related CN102437903B (zh) | 2011-08-03 | 2011-08-03 | 一种适用于智能车的多节点协调通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102437903B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113734194A (zh) * | 2021-08-10 | 2021-12-03 | 杭州电子科技大学信息工程学院 | 智能车、控制系统、控制方法、计算机设备、智能终端 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101266716A (zh) * | 2008-04-25 | 2008-09-17 | 港湾网络有限公司 | 一种基于Zigbee网络的智能车位引导系统和方法 |
CN101567823A (zh) * | 2008-04-23 | 2009-10-28 | 三星电子株式会社 | 使用ZigBee的通信系统和控制该系统的方法 |
US20110072285A1 (en) * | 2009-09-23 | 2011-03-24 | Fischer Matthew J | Method and System for No Buffered Traffic Indication for Wireless Local Area Network (WLAN) Power Save |
CN102004478A (zh) * | 2010-11-08 | 2011-04-06 | 湖北三江航天万山特种车辆有限公司 | 一种车辆多总线协调通信与控制系统 |
-
2011
- 2011-08-03 CN CN201110220474.3A patent/CN102437903B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101567823A (zh) * | 2008-04-23 | 2009-10-28 | 三星电子株式会社 | 使用ZigBee的通信系统和控制该系统的方法 |
CN101266716A (zh) * | 2008-04-25 | 2008-09-17 | 港湾网络有限公司 | 一种基于Zigbee网络的智能车位引导系统和方法 |
US20110072285A1 (en) * | 2009-09-23 | 2011-03-24 | Fischer Matthew J | Method and System for No Buffered Traffic Indication for Wireless Local Area Network (WLAN) Power Save |
CN102004478A (zh) * | 2010-11-08 | 2011-04-06 | 湖北三江航天万山特种车辆有限公司 | 一种车辆多总线协调通信与控制系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113734194A (zh) * | 2021-08-10 | 2021-12-03 | 杭州电子科技大学信息工程学院 | 智能车、控制系统、控制方法、计算机设备、智能终端 |
CN113734194B (zh) * | 2021-08-10 | 2023-01-20 | 杭州电子科技大学信息工程学院 | 智能车、控制系统、控制方法、计算机设备、智能终端 |
Also Published As
Publication number | Publication date |
---|---|
CN102437903B (zh) | 2014-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105491084B (zh) | 基于ota协议的车联网系统及其控制方法 | |
CN103064815B (zh) | 一种单spi总线控制多can接口的控制方法 | |
CN103259632B (zh) | 基于续采单传模型的无线传感网络数据可靠汇聚方法 | |
CN102946376B (zh) | 一种异步通讯的实现方法 | |
CN102098113B (zh) | 基于aloha和tdma的水声传感器网络mac层协议的实现方法 | |
EP2852101B1 (en) | Method and device for data transmission in wireless local area network | |
CN112491842B (zh) | 一种面向智慧工地的多协议物联网网关 | |
CN102567125A (zh) | 一种浏览器页面间通信的方法 | |
CN102006322A (zh) | 基于互联网实现远程抄表的方法及系统 | |
CN109587023A (zh) | 一种LoRa自组网方法及系统 | |
CN101222430A (zh) | 一种高速多协议数据传输系统和方法 | |
CN107567107A (zh) | 一种传输数据的方法及装置 | |
CN102752720A (zh) | 一种短距离无线接入冲突的避让方法 | |
CN103517318B (zh) | 一种数据发送方法、装置和系统 | |
CN101779415A (zh) | 防止对移动装置的基于tcp的拒绝服务攻击的方法 | |
CN104202806A (zh) | 发送端启动的异步无线传感器网络mac协议 | |
CN108112086A (zh) | 交互式信道通信方法 | |
CN109922537B (zh) | 无线模块及其实现方法 | |
CN209608868U (zh) | 应用于无线通信的数据链路层 | |
CN102929830A (zh) | 一种软件模拟快速通信协议 | |
CN104080185A (zh) | 一种适用于tcp/ip业务的无线资源调度方法 | |
CN102984814A (zh) | 一种大规模的gprs终端设备联网方法 | |
CN201594284U (zh) | 一键停车交费器和一键停车交费系统 | |
CN105282785B (zh) | 媒介配置时间的方法与其无线传输系统 | |
CN102437903B (zh) | 一种适用于智能车的多节点协调通信方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140305 Termination date: 20150803 |
|
EXPY | Termination of patent right or utility model |