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.

[参考译文] LAUNCHXL-CC2650:"simpleProfileChar5 array"当从 BLE 扫描仪接收到超过20个字节时、值被覆盖

Guru**** 2578945 points
Other Parts Discussed in Thread: CC2650

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1061682/launchxl-cc2650-simpleprofilechar5-array-values-are-overwritten-when-more-than-20-bytes-are-received-from-ble-scanner

器件型号:LAUNCHXL-CC2650
Thread 中讨论的其他器件:CC2650

您好!

我正在使用

CCS7.4

编译器 TI v5.2.4

BLE SDK 版本 BLE_SDK_2_02_07_06

"简单 BLE 外设"示例

BLE Scanner 应用用于将数据从 Android 传输到 CC2650

我已经根据这个网站 sunmaysky.blogspot.com/.../add-write-capability-to-characteristics.html 上的"YK"所说的那样修改了代码

然后我完成了以下更改


#define SIMPLEPROFILE_CHAR5_LEN 50.

我可以成功地将20字节的 BLE 扫描仪写入 CC2650。

但是、当我传输超过20字节的阵列时

simpleProfileChar5[SIMPLEPROFILE_CHAR5_LEN]被覆盖。

现在的问题是:   

当我发送 字母作为示例数据的 abcdefghijklmnopqrst 时、它存储为20字节的0至19数组索引、 我得到正确接收20字节的响应。

如图所示

但是、当我发送 26字节的 abcdefghijklmnopqrstuvwxyz 时、 6字节的0到5的数组位置将被覆盖、19之后的数组位置不会写入任何内容。 从20开始的阵列位置为空

是的   、我知道我必须在 ble_user_config.h 文件中增加 MAX_PDU_SIZE。

我 已经设置 了#define MAX_PDU_SIZE 50

但是、

数据被覆盖的原因

请为我提供解决方案

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

    我将 MAX_PDU_SIZE 设置为69并将 SIMPLEPROFILE_CHAR5_LEN 设置为30、以使用 LightBlue 应用测试该情况、一切都正常。

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

    谢谢你,陈怡凯,我会再试一次

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

    谢谢你,陈怡凯

    我使用进行了测试、如上所述。

    我 现在正在使用"LightBlue 应用"

    您能告诉我"MAX_PDU_SIZE "的上限和 "SIMPLEPROFILE_CHAR5_LEN"的上限是多少 ?

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

    我认为最大 MAX_PDU_SIZE 应为255、SIMPLEPROFILE_CHAR5_LEN 可能为251。

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

    您好、Yikai Chen 感谢您的宝贵回应、


    我使用进行了测试

    #define SIMPLEPROFILE_CHAR5_LEN 100

    和  

    #define MAX_PDU_SIZE          200

    这将导致正确写入90字节。

    在我的项目中、cc2650应通过 BLE 连接接收图像。 因此、我需要以最快的速度将数据写入 CC2650。

    根据《CC26x0 SimpleLink 低功耗 BluetoothRegistered软件堆栈开发人员指南》

    MAX_PDU_SIZE 范围为27到255最大 ATT_MTU = MAX_PDU_SIZE -4

    您能不能指导我获得最大范围

     (MAX_PDU_SIZE 范围为27至255。  最大 ATT_MTU = MAX_PDU_SIZE -4)

    软件开发人员指南中提到的那样?

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

    #define MAX_PDU_SIZE          255.


    #define SIMPLEPROFILE_CHAR5_LEN  220

     然后使用 Windows "BLE LE 应用"来传输数据、而不是使用 Android 应用。

    我现在可以成功地将220字节的数据写入 CC2650。

     Yikai Chen 感谢 您的支持  

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

    现在知道它的工作方式是很好的。