串口转WiFi在工业控制领域广泛的应用,通常我们使用多跳的方式实现WiFi远距离传输。,我们可以在A与C之间增加一个模块B,这样,B充但中继的作用。以下以simpleWiFi的S2W-M02以及S2W-M03中所实现的多跳机制进行描述。S2WM02、S2WM03已经稳定的运用到了很多超长距离通讯环境,该算法稳定性以及大量现场验证。并且该系列三串口转WiFi模块可以实现2串口、双串口、3串口和多串口UART转wifi的通讯,各个通讯相互完全独立,可以同时支持多个串口设备进行数据通讯。

本节主要描述多跳路由算法:

  1. 协议概述

该多跳路由实际上是 DSR和 DSDV的综合,以 DSDV为基础,采用DSR中的按需路由思想进行改进。它采用了DSR中路由发现和路由维护的原理,结合了DSDV的逐跳(hop-by-hop)路由,顺序编号和路由维护阶段的周期更新机制。与DSDV保存完整的路由表不同的是,基于按需路由思想的多跳路由只有在有需要的时候才建立路由,这与DSDV相比的好处是能减少大量维护路由所需的开销。与DSR相比,多跳路由的优势在于源路由并不需要包括在每一个数据分组中,这样能减少路由协议的开销。多跳路由协议可以实现在移动终端动态的、自发的路由,使移动终端很快的获得通向所需目的地的路由,而且不用维护当前没有使用的路由信息,还能对链路状态和拓扑的变化做出快速的反应。多跳路由使用路由请求序列号来保证无环路。避免了通常 Bellman-foul 算法的无穷计数(count-to-infinite)的问题,并且提供了很快的收敛速度。鉴于多跳路由路由协议功能强大而又便于实现的优点,故其成为嵌入式系统下UART 转WiFi 路由协议的首选。

路由请求帧格式

路由响应帧格式

  1. 路由发现过程

(1)结点在需要时(路径不存在或者无效),向其邻居广播RREQ分组用于路由发现。

(2)对接收到RREQ的结点作如下处理:

创建一个表项,用于记录反向路径;

如果在“路由发现定时”内已收到一个具有相同标识的RREQ分组,则抛弃该分组,不作任何处理;否则,更新该反向路由表项;

如果满足如下两个条件:

①:该结点就是信宿;

②:结点的路由表中有到信宿的活动表项,且表项的序列号大于RREQ中的信宿序列号;

则结点产生“路由回答分组”RREP,并发送到信源;否则,更新RREQ分组,并广播更新后的RREQ分组 。

(3)RREP的传播:RREP中的内容包括:跳计数、信宿序列号、信宿地址、信源地址、生存时间等。结点通过前面建立的反向路由反馈给源结点,并且是以单播方式发送;

(4)转发RREP的中间结点会更新路由表,记录转发路由的下游结点、跳数、生存时间、目的序列号等内容,并根据先前记录的反向路由将RREP报文转发给上游结点,直至源结点;

(5)源结点收到RREP报文后,就获得了到目的结点的路由,接下来,源结点就可以用该路由进行数据报文的发送了。

路由发现过程

上述算法已经大量的应用到了现场,能够实现稳定的多跳通讯。参考simpleWiFi的S2W-M02多串口2串口3串口双串口以及三串口的通讯模块。后续文章会详细介绍多跳路由保持实现。

3串口多串口双串口以及2串口UART转WiFi多跳通讯实现二相关推荐

  1. FPGA 串口中断_一个严谨的STM32串口DMA发送amp;接收(1.5Mbps波特率)机制

    昨天分享的<嵌入式大杂烩读者福利:第一期>大家有去抽奖吗,没抽的可参与抽奖,碰碰运气.我最喜欢抽奖了,还记得前几个月疫情严重时期连抽中了3包口罩,真刺激,哈哈.之后多多安排抽奖,敬请期待. ...

  2. FPGA之串口收发字符串之(四)——串口屏USART_HMI介绍

    之前对串口各模块的设计都做了相关介绍.这里介绍串口屏的相关知识. 本次项目使用的串口屏型号是陶晶驰串口屏TJC3224T024_011,这个型号的串口屏的资料在官网可以找到.本文抛转引玉,简单介绍以便 ...

  3. c++ 测试串口速率_Raspberry Pi Zero W:串口(UART)的配置和使用

    Raspberry Pi Zero W:串口(UART)的配置和使用 开启UART 据官方所言(https://www.raspberrypi.org/documentation/configurat ...

  4. STM32 HAL库 串口DMA(收发)和STM32串口中断接收(接收时间管理机制)+ESP8266 wifi模组通信问题

    一.HAL库 串口 DMA+ESP8266模组通信问题 用STM32 HAL库串口的DMA发送和空闲中断接收处理数据,单片机发送AT指令给ESP8266 wifi模组问题:单片机连续几次给wifi模组 ...

  5. 在串口通信开发中实现自动查找串口端口的方法

    开发工具:visual studio 2010 本机可用串口信息如下: 1 .查询注册表 查询注册表的方法是比较常见的方法,通过查看" HKEY_LOCAL_MACHINE\HARDWARE ...

  6. pci-e串口卡linux 驱动下载,万能PCI串口卡驱动下载

    下面点击下载安装,最新更新的这个版本对于很多用户来说,体验感觉还是可以的.虽然有一些小问题没有解决,但是大体上还是符合用户使用需求.尤其是针对之前版本的修改,就比较OK的感觉. 万能PCI串口卡驱动官 ...

  7. android 串口一直打开_实例 | 使用Python串口实时显示数据并绘图

    今天为大家分享一篇使用Python串口实时显示数据并绘图的例子,具有很好的参考价值,希望对大家有所帮助. 一.安装pyserial以及基本用法 使用pyserial进行串口传输,在cmd下输入命令pi ...

  8. rxtx串口事件不触发_一种串口高效收发思路及方案

    摘要:本文在探讨传统数据收发不足之后,介绍如何使用带FIFO的串口来减少接收中断次数,通过一种自定义通讯协议格式,给出帧打包方法:之后介绍一种特殊的串口数据发送方法,可在避免使用串口发送中断的情况下, ...

  9. react android 串口,Maix Bit(K210) 与上位机串口通信

    串口通信 1.K210 UART 1.1 .串口通信函数 1.2 .常用函数 3.代码 4.效果展示 准备工具 K210开发板 USB转TTL串口 (俗称ISP烧录器) 串口助手 其实Maix Bit ...

  10. android 串口通信丢包,新手求教为什么串口接收数据总丢包

    void Init_NVIC(void) { NVIC_InitTypeDef NVIC_InitStructure;                        //定义一个NVIC向量表结构体变 ...

最新文章

  1. javascript 防止息屏
  2. Ubuntu 12.04自带包安装GLPI IT资产管理软件
  3. 保存oracle数据之后乱码,Oracle保存中文数据和读取数据页面显示乱码解决方案
  4. 这个C怎么了?求大佬指教
  5. NanShan作者:风景未变人已变
  6. 如何保证缓存与数据库的双写一致性
  7. AIX补丁中TL、SP、CSP、IF、PTF的含义
  8. 深度学习—利用TensorFlow2实现狗狗品种品种(mobilenet实现)
  9. 基于神经网络的图像去水印/图像修复实践
  10. 10行代码,带你理解自然底数e、自然指数ln
  11. Android 4.3 隐藏功能 App Ops 分析
  12. java 高并发商城库存订单处理,下单减库存,如何解决高并发减库存问题
  13. 使用visDrone数据集训练yolov5检测器
  14. 【解读】Intel在hot chips上发布首款AI芯片
  15. npm更新和nodejs更新
  16. linux内核 猪头 作用,Linux内核驱动之一些重要数据结构
  17. pdf转换器的注册码
  18. 学院旅行计算机学院,计算机学院学生会 | 关于我们,你所不知道的……
  19. 振幅型空间光调制器为什么会改变相位?
  20. 使用xsl实时处理xml文档(Javascript语言)

热门文章

  1. pyecharts-饼图/极坐标/雷达/水球图/仪表盘/词云图/漏斗图/箱型图/热力图/日历图
  2. magisk核心功能模式是什么_HRT-Lin-荣耀V9 B347 自动接听Xposed 机型 Magisk 桌面设置 dpi等功能...
  3. Windows平台安装flutter之初体验(安装教程)
  4. 计算机联锁设备施工论文,毕业设计论文-计算机联锁设计
  5. APP原型设计利器-墨刀MockingBot
  6. Adreno GPU上Android 游戏开发介绍 (3)
  7. linux i350网卡,intel I350 网卡驱动安装方法
  8. Adobe Premiere(Pr视频剪辑)下载安装
  9. 应届毕业生软件测试面试流程、面试问题总结
  10. c语言sinx幂级数展开,求幂级数展开式的方法