打印

两个无线设备该如何主动握手连接

[复制链接]
873|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Thorald|  楼主 | 2016-7-23 18:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在进行无线通信时,比如2.4G(并非蓝牙和WIFI这样有协议栈的通信),因为没有协议栈的存在,要求用动态的方式使得两个设备进行配对。

我的想法是这样的:
开始:假设两个设备同时启动(实际是有时间差异),都向外部轮询的丢包和收包,包的内容包括:标识符、请求匹配命令、自身ID
这事就会碰撞了,那么,在等待接收包时进行一个范围内的随机数延时,这时应该是不会接收到包的,但是取随机数之后,因为延时的不同,导致了两个发包时间和收包时间存在差异和交错,就会使得存在一个设备刚刚发送完毕,另一个刚好在等待接收数据包。这样就能正常通信了。


但是,肯定会存在两个设备都能接收到对方的包,然后,识**,可能都会发送确认包进行确认,包内容包括:标识符、确认握手命令、自身ID和对方ID。
这种情况,当如果只有一方收到,那么另一方再发送握手成功的包,就标识握手成功了,那么“握手成功数据包”发送者理所应当的为主机了,而另一方为从机。
那么这样主机再发送一个开始通信的包进行通知从机,等待从机确认“已准备好”,这样就正式进入了数据的通信。

但是可能事情没有想象的这么好,因为都能正常的收到对方发的包,那么应该如何进行主机和从机的判断呢?或者说怎样让两者自行能够申请到作为主机端或者作为从机端,
能够顺利的握手匹配,不会造成两者因为争抢作为主机而造成死锁现象。

所要讨论的问题如上:目前我并未想好一个比较完善或者说比较好的解决方案!
看看能否有个比较好的解决方案!或者说,有什么很好的协议。

相关帖子

沙发
dirtwillfly| | 2016-7-23 18:47 | 只看该作者
你用的什么无线ic或者模块?

使用特权

评论回复
板凳
dirtwillfly| | 2016-7-23 18:49 | 只看该作者
一般可以让无线设备都处于接收状态。只有需要发信息时转换为发送状态。当通讯不需要很频繁的时候,这样就不会冲突

使用特权

评论回复
地板
jrcsh| | 2016-7-23 19:03 | 只看该作者
找个 TCP/IP 的协议看看人家是怎么样实现  握手的了

使用特权

评论回复
5
Bjorn| | 2016-7-23 19:13 | 只看该作者
这个拓扑结构有些麻烦,需要用到数学的矩阵去思考这个问题

使用特权

评论回复
6
Soraka| | 2016-7-23 19:37 | 只看该作者
可不可以用时间同步的方法。   你事先知道一组数据需要多长时间传输与处理,一个数据传输周期大于2倍的处理发送接收周期,这样你可以在这个定义周期内单工通信,因为mcu的当前状态和实际环境有很大关系,你不能确保这两个设备室同时开启的,所以在开机的时候这两个设备需要时间校准同步。为了能够更好的时间同步,需要每隔一定时间内两个设备时间再次同步(可以使一个小时,也可以使一天,一个月),但时间同步法的前提是两个设备正常工作,且可进行通信协议。

使用特权

评论回复
7
Brand2| | 2016-7-23 19:50 | 只看该作者
这是无线组网的技术了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

183

主题

849

帖子

1

粉丝