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-CC2640R2:GATT_READ 似乎正在冻结或崩溃程序。

Guru**** 2587345 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1415013/launchxl-cc2640r2-gatt_read-seems-to-freeze-or-crash-program

器件型号:LAUNCHXL-CC2640R2

工具与软件:

我目前使用 simple_peripheral 和 simple_central 程序来通信游戏手柄数据。  我使用任务和信标成功地从外设发送持续数据。  但是、当我尝试相同的方法时、它似乎会冻结 Putty 窗口、这可能会表明系统崩溃或看起来正在进入中止循环。  如果我将 simple_central 保持不变并且执行 GATT_Read、按下按钮、我已成功读取一些控制手柄数据。  显然、我需要 GATT_READ 连续发生。  因此、我尝试了使用线程、任务和信标作为发送数据的 simple_peripheral。  当 Putty 屏幕冻结时、程序似乎会崩溃。  我想也许我需要把优先级更改为较低的优先级、但这并没有奏效。  我需要做哪些不同的事情?  有一个不断调用 Gatt_Read 的逻辑还是有一个不同的方法需要采取?  在 simple_peripheral 侧、它使用线程和信标、我一直在调用  Siclla Profile_Set contra (SIMPLEPROFILE_CHAR5、SIMPLEPROFILE_CHAR5_LEN、&adcValue);



以下是我在 simple_central 中尝试的值

在一个 线程中调用 GATT_readChar



然后处理从 SIMPLEPROFILE_CHAR5特征的移位和读取 adcValue 并进行移位。   


当我使用板上的按钮执行简单的 GATT_READ 时、运行效果很好、但在线程中使用它时似乎会绑定和/或崩溃。

也许我需要  向 iCall 注册吗?  可能是崩溃,或者当我调试它时调用中止函数,因为我正在从另一个任务/线程调用 Gatt_Read 3891值,它无法与另一个线程通信,因为它没有在 iCall 中注册?   
但在这种情况下、为什么我能够从另一个任务调用 simple_peripheral 程序中的 set_parameter 而不出现任何问题?

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

    您好!

    您是对的、任何调用 BLE API 的线程都必须向 ICall 注册。 我建议查看 simple_central 任务寄存器如何使用 ICall 并且复制同样的逻辑。 之后、您应该能够进行相同的 API 调用。 另一种不需要注册第二个任务的替代方法是将事件发送到 simple_central 事件循环、以便从 simple_central 任务的上下文中执行 GATT_READ、

    此致、

    1月

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

    非常感谢 Jan  我刚刚创建了另一个任务与一个时钟,并继续调用按钮事件,它的工作方式就像一个魅力。  我在这里呆了一段时间。  感谢您的宝贵意见。