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.

[参考译文] CC2650:SP客户端 启用多个特性

Guru**** 2589300 points
Other Parts Discussed in Thread: CC2640

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/605966/cc2650-sppclient-enable-multiple-characteristics

器件型号:CC2650
主题中讨论的其他器件:CC2640

您好!

我有一个使用 CC2640的传感器、该传感器具有三个特征。 我需要使用串行通信从这些特征中读取数据、因为我使用的是 SPPclient 和 smarttrf06评估板的修改示例。 但是、我无法接收串行通信中三个不同特性的数据。 我已检查客户端特征配置的句柄是否正确、并使用 RetVal = GATT_WriteNoRsp (connHandle、&req)启用特征;、返回成功。 特性值的句柄也是正确的。 到目前为止,我只能从两个特性中获取数据,因此没有接收到最后启用的特性,我互换了句柄(下面的 charCCCD2Hdl 和 charCCCD3Hdl),以便在不同的时间启用它们。 我收到了当时正确启用的这两者的数据。 因此、我不知道为什么不能获取这三个特征的数据。 我也尝试使用 RetVal = GATT_Notification (connHandle、&req、0);以启用通知、但这完全不起作用。 有人可以提供帮助吗? 以下是启用通知的代码。

IF (事件和 SBC_UART_CHANGE_EVT)
{
//处理消息。
uint8返回值;
attWriteReq_t req;
uint8 configData[2]={0x01、0x00};
事件&=~SBC_UART_CHANGE_EVT;

REQ.pValue = GATT_BM_alloc (connHandle、ATT_WRITE_REQ、2、NULL);
if ((req.pValue!= NULL)&& charCCCD1Hdl)
{
REQ.Handle = charCCCD1Hdl;//数据特性的 CCCD 句柄
Req.len = 2;
memcpy (req.pValue、configData、2);
REQ.cmd = true;//对于来自服务器的 NoRsp 必须为 true (命令,而不是请求)
REQ.SIG = false;
RetVal = GATT_WriteNoRsp (connHandle、&req);
if (RetVal!=成功)
{
调试("启用通知1...\n\r\n"ERROR);
lcd_write_string ("启用通知时出错"、lcd_page4);
}
其他
{
调试("通知1已启用...\n\n");
lcd_write_string ("通知已启用"、lcd_page4);

charCCCD1Hdl = 0;
Util_startClock (&startNottiEnableClock);
}
}
if (((req.pValue!= NULL)&& charCCCD2Hdl &&!charCCCD1Hdl)
{
REQ.Handle = charCCCD2Hdl;//数据特性的 CCCD 句柄
Req.len = 2;
memcpy (req.pValue、configData、2);
REQ.cmd = true;//对于来自服务器的 NoRsp 必须为 true (命令,而不是请求)
REQ.SIG = false;

RetVal = GATT_WriteNoRsp (connHandle、&req);


if (RetVal!=成功)
{
调试("启用通知2...\n\r\n"时出错);
lcd_write_string ("启用通知时出错"、lcd_page4);

}
其他
{
调试("通知2已启用...\n\n");
lcd_write_string ("通知已启用"、lcd_page4);


}
}

if ((req.pValue!= NULL)&& charCCCD3Hdl &&!charCCCD1Hdl)
{
REQ.Handle = charCCCD3Hdl;//数据特性的 CCCD 句柄
Req.len = 2;
memcpy (req.pValue、configData、2);
REQ.cmd = true;//对于来自服务器的 NoRsp 必须为 true (命令,而不是请求)
REQ.SIG = false;
RetVal = GATT_WriteNoRsp (connHandle、&req);
//RetVal = GATT_Notification (connHandle、&req、0);
if (RetVal!=成功)
{
调试("启用通知3...\n\r\n"ERROR);
lcd_write_string ("启用通知时出错"、lcd_page4);

}
其他
{
调试("通知3已启用...\n\n");
lcd_write_string ("通知已启用"、lcd_page4);
}
}



谢谢、

全日空

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

    当您说"我只能从两个特征获取数据、因此未接收到最后启用的特征"时、这是否意味着您可以在三个特征中的任意两个特征上启用通知、或者是否有一个特征您无法接收通知? 您是否已验证您要写入的句柄是否具有通知? 是否确定要发送新值?

    我建议首先使用 HostTest 示例应用程序和 BTool、在尝试调试 SPP 客户端代码之前、查看在传感器端启用通知是否存在错误。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    是的、我是说我可以在三个特征中的任何一个中启用通知。 是的、有一个新值需要发送。 我已经使用 Android 对其进行了测试、可以在没有问题的情况下启用这三个特性。

    谢谢

    全日空