嗨
我使用DSPS作为我的设备连接到电话的基础。
设备架构是MSU通过BLE芯片与电话进行串行通话。
我发现,当我的手机应用程序连接到设备时,第一条消息总是被延迟至少800ms,只有第二条消息才会释放第一条消息。
背景:我的应用程序会发送一个消息,超时后它会一次又一次发送消息N次。
场景如下:
- 在连接手机发送消息到设备,第一个消息将总是超时,约800ms后所有的消息(第一个和重试)将到达MCU。
- 如果超时时间是200ms,单片机将在连接后大约8000ms一次得到4条消息。
- 如果超时时间是2000ms, MCU将在连接后2秒得到2条消息。
我调查了这个问题,似乎延迟是由协议栈的较低级别产生的,GATT只有在大约800ms后用积累的消息调用数据的较高级别。
显然,延迟导致应用程序在连接时工作缓慢,我想修复它。
请建议。
拉兹法勒
设备:
嗨razp,
请问您是有自定义的手机应用还是正在使用我们的DSPS手机应用?
谢谢,PM_Dialog
这是我们为自己的设备开发的定制移动应用程序。
嗨razp,
请问这个问题是DA14580的问题还是你的自定义手机应用的问题?在支持网站上有一个DSPS移动应用程序,源代码是可用的。
谢谢,PM_Dialog
你提出了一个有趣的问题。我认为延迟和问题是在DA14580,我可能是错的。
场景如下:
1.BLE连接建立。
2.应用程序在连接时发送消息。
3.消息被BLE设备在大约800ms后收到,只有在第二次重试后。
问题是低层发生了什么?
电话上的信息是立即留下的吗? DA1580上的延迟?
延迟是否源自手机:消息只有在延迟和重试之后才会留在手机上?
你知道怎么测试吗?
嗨razp,
您的问题存在与我们的DSPS移动应用程序?你试过吗?
谢谢,PM_Dialog
你好,
我不知道如何模拟这个场景与DSPS移动应用程序。
请建议。
你好,
当你试图发送第一条信息时,你是否知道你的手机应用程序是否已经完成了服务发现?服务发现可能需要很长时间,这取决于外围/从属设备提供的服务数量和特征。
/米凯尔
谢谢你!
我做了一些调查,显然我们用设备状态:连接,作为开始交流的标志。
将“开始通信”标志移动到服务发现通知中可以解决这个问题。