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

2019-07-21 20:04发布

在进行无线通信时,比如2.4G(并非蓝牙和WIFI这样有协议栈的通信),因为没有协议栈的存在,要求用动态的方式使得两个设备进行配对。

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


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

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

所要讨论的问题如上:目前我并未想好一个比较完善或者说比较好的解决方案!
看看能否有个比较好的解决方案!或者说,有什么很好的协议。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
dirtwillfly
1楼-- · 2019-07-21 21:05
你用的什么无线ic或者模块?
dirtwillfly
2楼-- · 2019-07-22 02:55
一般可以让无线设备都处于接收状态。只有需要发信息时转换为发送状态。当通讯不需要很频繁的时候,这样就不会冲突
jrcsh
3楼-- · 2019-07-22 03:07
找个 TCP/IP 的协议看看人家是怎么样实现  握手的了

Bjorn
4楼-- · 2019-07-22 07:17
 精彩回答 2  元偷偷看……
Soraka
5楼-- · 2019-07-22 10:01
可不可以用时间同步的方法。   你事先知道一组数据需要多长时间传输与处理,一个数据传输周期大于2倍的处理发送接收周期,这样你可以在这个定义周期内单工通信,因为mcu的当前状态和实际环境有很大关系,你不能确保这两个设备室同时开启的,所以在开机的时候这两个设备需要时间校准同步。为了能够更好的时间同步,需要每隔一定时间内两个设备时间再次同步(可以使一个小时,也可以使一天,一个月),但时间同步法的前提是两个设备正常工作,且可进行通信协议。
Brand2
6楼-- · 2019-07-22 15:35
这是无线组网的技术了

一周热门 更多>