您好 Arthur、
我已 从 GitHub 的给定链接将简单串行套接字客户端示例代码移植到 CC1352P7。 除一些警告外、所有编译错误都将得到解决。
可以看到 UART 终端打印"Info: DONE Initializing"。
我已根据所需的串行 客户端代码更改了所需的 UUID。
我对如何使用制造商 ID 将 CC1352p7与 CC2650 (BLE 外设)连接感到困惑。
请帮助我解决此问题
谢谢!
D·萨尔维
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.
您好 Arthur、
我已 从 GitHub 的给定链接将简单串行套接字客户端示例代码移植到 CC1352P7。 除一些警告外、所有编译错误都将得到解决。
可以看到 UART 终端打印"Info: DONE Initializing"。
我已根据所需的串行 客户端代码更改了所需的 UUID。
我对如何使用制造商 ID 将 CC1352p7与 CC2650 (BLE 外设)连接感到困惑。
请帮助我解决此问题
谢谢!
D·萨尔维
您好!
我已更改代码、现在可以连接到 BLE 外设 CC2650。
static void SimpleSerialSocketClient_processAppMsg(ssscEvt_t *pMsg) { bool safeToDealloc = TRUE; // Specify the address 84:C6:92:F3:E7:B0 // uint8_t targetAddress[B_ADDR_LEN] = {0x84, 0xC6, 0x92, 0xF3, 0xE7, 0xB0};// uint8_t targetAddress[B_ADDR_LEN] = {0xB0, 0xE7, 0xF3, 0x92, 0xC6, 0x84};// switch (pMsg->hdr.event) { case SSSC_EVT_ADV_REPORT: { target_addr_matched = 0; GapScan_Evt_AdvRpt_t *pAdvRpt = (GapScan_Evt_AdvRpt_t*) (pMsg->pData); // if (SimpleSerialSocketClient_findSerialStreamServer( // SimpleStreamServerUUID, serverManufData, // sizeof(serverManufData), pAdvRpt->pData, pAdvRpt->dataLen)) for (int i = 0; i < B_ADDR_LEN; ++i) { if ((pAdvRpt->addr[i]) == (targetAddress[i])) { target_addr_matched++; } else { unmatched++; return; } } if(target_addr_matched==B_ADDR_LEN) { // We found our device scanningStarted = FALSE; // Disable scanning GapScan_disable(""); // Establish a connection to the device GapInit_connect(pAdvRpt->addrType & MASK_ADDRTYPE_ID, pAdvRpt->addr, INIT_PHY_1M, 0); } // Free report payload data if (pAdvRpt->pData != NULL) { ICall_free(pAdvRpt->pData); } break; }
我正在检查外设的能力地址、如果找到所需的地址设备、则连接到该设备。
for (int i = 0; i < B_ADDR_LEN; ++i) { if ((pAdvRpt->addr[i]) == (targetAddress[i])) { target_addr_matched++; } else { unmatched++; return; } }
现在、我在终端上看到这个、
但是在键入时、终端窗口上没有显示任何内容。
我认为、根据 GitHub 上的自述文件、我需要启用通知。
请帮我解决这个问题。
谢谢!
D·萨尔维
您好!
感谢您的耐心。 由于所用器件型号的混淆、支持被延迟。
根据提供的日志、我了解您已成功在设备之间建立了蓝牙连接。 但是、根据您的描述、通知接收未启用。 是这样吗?
客户端(以及此示例中的蓝牙中心)应启用通知。 您能否确认此操作已在中心侧成功完成?
应通过写入与要接收通知的特征相关的 CCCD 特征来启用通知。
我希望这将有所帮助、
此致、
您好! (2024年4月10日、IST 01:30)
我认为 CC1352能够找到服务 UUID、但代码中的某些条件不满足。
根据屏幕截图、
IN 函数 uint32_t SimpleServiceDiscovery_discoverService (uint16_t connHandle、Call_Entity 52实体、
simpleService_t *服务、gattMsgEvent_t * pMsg)
如果、
案例 BLE_DISC_STATE_SVC:
{
//找到服务,存储句柄
如果(pMsg->method == ATT_FIND_by_type_value_RSP &&
pMsg->msg.findByTypeValueRsp.numInfo >0)
{
service->startHandle = ATT_ATTR_Handle (pMsg->msg.findByTypeValueRsp.pHandlesInfo、0);
service->endHandle = ATT_GRP_END_Handle (pMsg->msg.findByTypeValueRsp.pHandlesInfo、0);
// char * uart_msg_str ="找到服务,存储句柄\n\r";
// uart2_write (uartHandle、uart_msg_str、strlen (uart_msg_str)、NULL);
}
不满足此"如果"条件。
并且直接控制则尝试在最后一行退出该函数、
返回返回值;
尊敬的 Dnyaneshvar:
您是否具有服务发现过程的监听器日志?
您可以将另一个 TI LaunchPad 与数据包监听器软件配合使用:
https://www.ti.com/tool/download/PACKET-SNIFFER-2/1.9.0
谢谢、
M·H
此外、我遵循了 https://software-dl.ti.com/lprf/simplelink_academy/modules/ble_01_basic/ble_01_basic.html 上的指令 、并扫描了 CC2650的属性表。 更改屏幕截图以了解更多信息。
尊敬的 Dnyaneshvar:
感谢您发送日志、但它不是我们所需要的。
如果我正确理解了您的问题、您会收到 BLE_DISC_STATE_SVC 事件、但 pMsg 字段为空。 例如、服务发现有问题。
服务发现是在设备连接后发生的过程。 (您正确地说、设备在广播数据包中可以具有一个或多个服务 UUID、但该信息不会传输到服务发现过程。 中央设备必须从头开始。) 如果在监听器日志中捕获了成功的服务发现过程、则表明中心设备正在请求服务句柄、并且外设正在发送服务句柄。 基于此、中央系统将构建与您发送的屏幕快照中的服务表类似的服务表。
如果在监听器日志中捕获连接时遇到问题、它可以帮助您将广播修改为仅使用一个通道、然后确保监听器在同一个通道上监听。
谢谢、
M·H
尊敬的 Dnyaneshvar:
1.本 SimpleLink Academy 中包含有关更改广播通道映射的说明。 您必须更新 advChannelMap。
2.我认为监听器默认使用频道37。 因此、如果您在外设上使用此信道、它们将使用相同的信道。
3.您可以在用户指南中看到如何设置监听器以遵循连接、向下滚动到数据包监听器、SmartRF 监听器代理设置。
谢谢、
M·H
尊敬的 Marie H:
感谢你的帮助。
我已根据提供的链接中给出的说明将 CC2650设置为在通道37上进行广播、还验证了 CC2650使用通道37使用该监听器广播其数据。
是的、监听器默认使用通道编号 37.
监听器的结果没有变化。
我甚至尝试 通过 LightBlue Android 应用连接 CC2650 (BLE 外设)、并将一些数据发送到 CC2650。
但得知 在 BLE 中央设备和外设相互连接后、我不会获得任何监听器信息。
附加屏幕截图。
在连接后的屏幕截图中、建立连接后该低频器件之间没有有关 BLE 通信的信息。
我正在发送一条个人消息、其中包含监听器的全部日志、以了解详细信息。
可能是在建立 BLE 连接后、监听器未捕获数据。
(我们在办公室有许多可识别设备(CC2650和其他设备)、我没有看到它们在监听器日志中交换数据、只有 ADC 和扫描 RSP)
----------------------------------------------------------------------------------------------------------
除此之外、我想与您分享一些信息。
在 GITHUB 的以下链接上、有一个有关项目限制的注意事项。
该文档涉及不同的项目 CC2340R5 (SDK7.40)。 链接、
但是、当我尝试将它与我当前的问题相关联、并知道 simple_serial_socket_client.c 文件中使用.NumChars = 2的初始化结构变量 streamServiceHandle (附有屏幕截图)时。
但在我的 BLE 外设应用中、它具有21个特征。
该结构用于
功能 uint32_t SimpleServiceDiscovery_discoverService (uint16_t connHandle、Call_Entity 实体、
simpleService_t *服务、gattMsgEvent_t * pMsg)
{
在文件中 simple_service_discovery.c 用于与服务发现相关的功能。
这是否与我的问题相关?
谢谢!
D·萨尔维
尊敬的 Marie H:
我有更新。
我参考了项目 "simple_central_LP_CC1352P7_4_tirtos7_ticlang"。
并在 simple_service_discover.c 文件中进行了一些更改。 (需要16位 UUID 而非128位)
我改变了 service->uuuid.uuid , 至 uuid 和 service->uuuid.len 至 ATT_BT_UUID_SIZE。
我开始成功地发现简单的服务。
(请参阅随附的屏幕截图)。
但是当我在控制台上键入内容时、仍然没有在 BLE 外设端(CC2650)收到任何内容
此致、
D·萨尔维