This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2540:写入 CC2540上的大型特征?

Guru**** 2535750 points
Other Parts Discussed in Thread: CC2540

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/640836/cc2540-writing-to-large-characteristic-on-cc2540

器件型号:CC2540

大家好、团队!

我的客户对从 CC2540上的 iOS 应用程序写入大特征(21字节)有疑问。

下面是我的客户尝试实现的概念。

目前、他们正在尝试对涉及从 iOS 应用程序写入特征的概念进行概念验证。 目标是能够从 iOS 写入大于20字节的特征。  他们编写了一个 iOS 应用、并修改了在2540上运行的固件以支持新的服务和特征。 从 iOS 写入此特征时、它们能够成功写入20个字节、但将其推送到21个字节会导致错误、表明值长度无效。  他们 能够成功读取此特征。

 

他们 已经验证了这种情况在自己的 iOS 应用程序以及 iOS 应用 LightBlue 中发生。  他们还在 Android 上的 LightBlue 上确认、情况也是如此、 他们 能够读取21字节的特征、但无法写入。

 

问题是、您是否知道可以从 iOS 写入21字节或更多的特征? 2540上是否需要更改以支持此功能?

 

如果您需要进一步的信息或澄清、请告诉我。

 

谢谢!

Peter

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Peter:

    您使用什么命令来写入此特征? 为了使用 GATT_WriteCharValue 写入特征值、您的大小限制为 ATT_MTU-3。 要写入更长的值、请使用 GATT_WriteLongCharValue。 更多信息、请参阅 BLE API 指南中的 GATT 客户端子过程 API 函数。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Rachel、

    我的客户 已经了解了您提到的 WriteLong。。。 问题是、他们发现 iOS/Android 似乎不支持此功能、所以我想知道我们是否有任何示例应用程序或代码支持写入2540?

    谢谢!

    Peter

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Peter、

    根据 iOS 内核蓝牙文档、它们似乎支持通过 CBCharacteristic WriteType 'withResponse'选项进行 GATT 长写操作:
    developer.apple.com/.../cbcharacteristicwritetype
    "一般而言、当您使用响应进行写入时、您可以写入比您在没有响应的情况下写入时允许的值更长的特征值。"

    至于器件端的变化、长写入的处理与无响应写操作相同、但存在以下差异:
    length 表示完整长度、方法为 ATT_EXECUTE_WRITE_REQ。 您不必像对 Blob 读取操作那样管理偏移量。

    请注意、准备写入队列大小默认为5个元素、或5 x 18 = 90字节。 您可以通过使用 GATT_PARAM_NUM_PREPAREED_PREPARIES 参数调用 GATTServApp_SetParameter 来增大队列的大小。

    祝你一切顺利
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jeff:

    感谢您提供信息!

    因此、我的客户在浏览了所有这些信息并尝试了一些东西后、意识到限制为90字节将不能用于他们的应用。

    他们决定自行实施一个 blob 写入、从而允许他们进行更大的传输。

    感谢对此问题的支持!

    此致、

    Peter

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Peter、

    很高兴看到他们有一个解决方案。 对于其他人、90字节不是限制、它只是默认的准备写入队列大小。 如前所述、可以使用 GATTServApp_SetParameter API 来增加 PREPARE 写入队列、其中、n 以18字节为单位。 因此、将队列大小设置为20将允许400字节。

    祝你一切顺利