涉及到的设备有:主设备两个582F、从设备一个582F;
实现功能:两台主设备默认连接上后发送信息到从机,之后保持连接定时发送信息;
遇到的问题:两台主设备连接成功后,能正常定时的发送信息,但是具有不稳定的问题,主要是遇到主从设备之间保持着连接,但是主设备发送信息、从设备却收不到信息。有时关闭主设备后重新开机,正常连接上主设备后也无法接收到主设备发送的信息,如图
涉及到的设备有:主设备两个582F、从设备一个582F;
实现功能:两台主设备默认连接上后发送信息到从机,之后保持连接定时发送信息;
遇到的问题:两台主设备连接成功后,能正常定时的发送信息,但是具有不稳定的问题,主要是遇到主从设备之间保持着连接,但是主设备发送信息、从设备却收不到信息。有时关闭主设备后重新开机,正常连接上主设备后也无法接收到主设备发送的信息,如图
2台主设备连接1个从机进行多连接的功能。在最初建立连接的时候,主从机协商好连接间隔,但是晶振会有会有误差,可能导致发送数据的间隔慢慢的靠近,最终导致在某个时间点,2台主机同时发送数据给从机,导致丢掉了一包,甚至可能出现断连的情况。
基于上面到的问题,①建议2台设备的连接间隔进行协商,协商为不一样的,最好为质数,减小撞在一起的概率;
②建议主机与从机进行通信的时候,做好发包是否成功的判断,如果发送失败则再次进行发包。
在进行连接的时候,我观察到主机程序有时没有运行到
PRINT("Found Profile Service handle : %x ~ %x \n", centralSvcStartHdl, centralSvcEndHdl);
以及PRINT("Found Characteristic 1 handle : %x \n", centralCharHdl);
好像是没有发现特征,也没有开启服务。这个会不会和从机那边程序也有关系,但是有时候又能发现特征。求解,谢谢
是否发现服务理论上不会是概率的,可以用手机连接查看是否可以建立连接并枚举到对应的服务。
连接之后进行服务的枚举是需要通过填写unknown service的UUID,并获取到对应的handle值,如果没有获取到,检查UUID是否填写正确。