工具与软件:
您好!
我在一些操作中使用了3块 cc2340r5板 、我将一个器件用作中央+外设、一个用作中央器件、另一个用作外设。
因此、当 c+p 器件同时连接到不同的中央和外设时、数据不会传入或传出、但当 c+p 单独与中央或外设连接时、数据要传入、但连接2个器件时、数据不会传入。
您能否指导如何解决此问题、以及如何在连接时将数据发送到多个器件。
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.
您好!
感谢您在 E2E 论坛上发帖。 我有几个问题可以帮助我们解决这个问题。
1.您要为该项目使用什么 SDK?
2.如何在设备之间传输数据? 要发送多少字节?
2.5.哪个设备正在启动数据传输?
3.设备是否已绑定/配对?
4.为了确保我已经理解了当前的问题:当所有三个设备都连接时,没有数据被传输。 然而、当 C+P 连接到中央设备或外设(但不是两者都连接)时、数据正在正确传输。
此致!
Nima Behmanesh
Nima 您好!
感谢您的答复、
IC - CC2340R5
SDK 版本-simplelink_lowpower_f3_sdk_7_40_00_64
CCS 版本- 12.6
对于这种通信、我们将使用 CC2340R5 (器件充当中央器件和外设)、C+P 当前我们将使用 CC2340R5器件。
1.对于中央+外围器件、我们使用 SDK simplelink_lowpower_f3_sdk_7_40_00_64、CCS 版本为12.6
对于中央器件和外设、分别使用 CC2340R5器件、SDK 为 simplelink_lowpower_f3_sdk_7_40_00_64
2.我们是从 C++ P 设备向中央设备发送数据(我们在建立连接后持续发送这些数据),数据大小是1字节。
2.5 C+P 将启动数据到中央设备的传输(但在我们的案例中、中央设备和外设2个与 C+P 连接的设备、C+P 将连续向中央设备发送数据、但我们不会从 C+P 设备连续向中央设备获取数据、而是 C+P 设备连续向中央设备 char UUID 发送数据)。
3.是的
4.是的,当 C+P 与当时的中央或外围设备连接时,它连续发送数据,但当所有三个设备相互连接时, C+P 正在向中央设备发送数据(而调试数据不是进入中央设备)。
请尽可能早地做出响应。
谢谢。此致
Balaji Wankhede
您好、先生、
感谢您的答复
我们尝试发送的是仅使用 GATT 的情形。
当 C+P 设备与中央设备或外设连接时运行正常、但当它与中央设备和外设连接时、我们面临问题(C+P 设备将数据发送到第一个连接的设备、而不是第二个设备)。
您还需要什么信息?
我们正在尝试在连接后将数据从 C+P 器件发送到中央和外围设备(C+P 器件是我们的主 ECU、中央器件是移动应用、外设是与我们的主 ECU 连接的另一个器件)。
谢谢、此致
Balaji Wankhede
你好 Nima ,
感谢您的答复。
我们使用 GATT 处理程序将数据从一个器件发送到另一个连接的器件、其中我们根据连接的器件的特定字符发送数据。
静态空 GATT_eventhandler (uint32事件、BLEAppUtil_msgHdr_t * pMsgData);
//事件处理程序结构、包含处理程序和事件掩码
//应用程序数据模块
BLE4.4510_t Util_Event dataGATTHandler =
{
.handlerType = BLEAPPUTIL_GATT_TYPE、
.pEventHandler = GATT_eventhandler、
.EventMask = BLEAPPUTIL_ATT_FLOW_CTRL_COVERSED_EVENT |
BLEAPPUTIL_ATT_MTU_UPDATD_EVENT
};
用于从创建的 GATT_WRITE ()函数发送数据当我们调用 GATT_WRITE ()时,它将通过连接设备的特定字符从另一个连接的设备发送数据。
在这种情况下、C+P 器件发送数据、但数据仅在一个器件上接收。
我们尝试将数据从 C+P 器件发送到两个连接的器件的两个不同字符、在这种情况下也会发生相同的问题。
我们已尝试过所有可能的方法、但我们能够解决此问题、请咨询您的 BLE 专家。
谢谢您的问候
Balaji Wankhede
尊敬的 Balaji:
我能否看看在 C+P 端处理发送和接收的代码实现情况?
只是为了澄清、数据是在链路建立事件正确后发送的? 它是基于一个能够发送 N 毫秒等的计时器吗? 嗯 已连接设备的连接句柄列表 ?
我仍在尝试重现此示例、但了解有关应用程序处理方式的更多信息将有所帮助。
最新动态:
在进一步研究后、我相信连接句柄可能是您看到这种行为的原因。
当 C+P 设备与中央设备或外设连接时运行正常、但当 C+P 设备同时与中央设备和外设连接时、我们面临问题(C+P 设备将数据发送给第一个连接的设备、而不是第二个设备)
1.如何管理第二台设备的连接句柄?
void Peripheral_GAPConnEventHandler(uint32 event, BLEAppUtil_msgHdr_t *pMsgData) { switch(event) { case BLEAPPUTIL_LINK_ESTABLISHED_EVENT: { /** CODE TO BE ADDED **/ BLEAppUtil_gapConnData_t *msg = (BLEAppUtil_gapConnData_t *)pMsgData; /** CODE TO BE ADDED END **/ /* Check if we reach the maximum allowed number of connections */ if(linkDB_NumActive() < linkDB_NumConns()) { /* Start advertising since there is room for more connections */ BLEAppUtil_advStart(peripheralAdvHandle_1, &advSetStartParamsSet_1); } else { /* Stop advertising since there is no room for more connections */ BLEAppUtil_advStop(peripheralAdvHandle_1); } display_index++; /** CODE TO BE ADDED **/ MenuModule_printf(APP_MENU_ADV_EVENT + 5 + display_index, 0, "Link Established: %d role: %d", (msg->estLinkReqEvent).connectionHandle, (msg->estLinkReqEvent).connRole); /** CODE TO BE ADDED END **/ break; } case BLEAPPUTIL_LINK_TERMINATED_EVENT: { BLEAppUtil_advStart(peripheralAdvHandle_1, &advSetStartParamsSet_1); break; } default: { break; } } }
上面的代码指示已连接器件的连接句柄及其连接角色。 请在 GATT_WRITE 之前添加代码来验证连接句柄、从而验证发送信息时使用的连接句柄是否正确。 请参见/**要添加的代码**/注释。
此致!
Nima Behmanesh