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.

[参考译文] LP-EM-CC2340R5:通过 basic_ble_GATT_CLIENT 进行连续数据传输

Guru**** 2589265 points
Other Parts Discussed in Thread: LP-EM-CC2340R5

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1388819/lp-em-cc2340r5-continuous-data-transmission-by-basic_ble_gatt_client

器件型号:LP-EM-CC2340R5

工具与软件:

背景

我正在使用两个 LP-EM-CC2340R5评估板进行通信。

如果我将01写入特性3、01将被告知特性4。

将中心设备连接到终端。 请参阅"Write the Characteristic"菜单。 通过选择特性3、发送01。

因此、如果不选择特性3、则不会发送01。

问题

如何使用特性3连续发送01?

具体来说、我希望每50ms 发送一次01及 Characteristic3。

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

    您好!

    感谢您的咨询。 因为您已经在使用  basic_ble_GATT_CLIENT项目示例中、您可以在 app 文件夹下的 app_menu.c 文件中添加一个计时器、以每50ms 发送一次消息:  

    例如、您可以 在 app_menu.c 中添加每50ms 发送一次消息函数  启动一个计时器实例、其中您有一个在计时器过期时调用的回调函数、在计时器中设置时间(50ms)、该标志指示计时器是否是周期性的。 下面的示例请注意、如果只是复制和粘贴、则不起作用、这只是它的外观示例、需要设置计时器并根据代码要求进行设置。

    void sendMessage(timerHandle timerHandle, void *unused)
    {
        static int i = 0;
        bStatus_t status;
        req.pValue = GATT_bm_alloc(menuCurrentConnHandle, ATT_WRITE_REQ, 1, NULL);
        req.len = 1;
        req.pValue[0] = i;
        req.sig = 0;
        req.cmd = 1;
        req.handle = CHAR_3_HDL;
        i++;
    
        status = GATT_WriteNoRsp(menuCurrentConnHandle, &req);
        MenuModule_printf(APP_MENU_GENERAL_STATUS_LINE, 0, "Call Status: GATTWrite = "
                          MENU_MODULE_COLOR_BOLD MENU_MODULE_COLOR_RED "%d" MENU_MODULE_COLOR_RESET,
                          status);
        if (status != SUCCESS)
        {
            GATT_bm_free((gattMsg_t *)&req, ATT_WRITE_REQ);
        }
    
    }
    
    void Menu_doSend(uint8 index)
    {
        static bool timerStarted = false;
        static timerHandle timer;
        // Start pinging
        if (index == 0)
        {
            if (timerStarted)
            {
                MenuModule_printf(APP_MENU_GENERAL_STATUS_LINE, 0, "Call Status: ping already started");
    
            } else
            {
                timer = StartTimer(sendMessage, 50, true, NULL);
                timerStarted = true;
            }
        }
    }

    此致、

    Ivan

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

    感谢您的答复。

    我能够通过创建计时器来连续发送数据。