跳过主要内容

多机示例发送数据

1个月前

多机示例发送数据

发表本杰明图135分 12个答复
0个投票

嗨对话,

简而言之,我的问题是如何将数据发送到奴隶多机例子。

让我解释一下我的问题:

我用DA14531-DA14585 586_Multirole_例示例与多奴隶连接(我使用ble_app_profile示例),我可以连接多个奴隶和主人(多机)可以接收从从属的数据,但我不知道如何将数据发送到从属,我使用iPad连接从属(ble_app_profile示例),从属可以接收数据。

我测试了以下内容USER_CATCH_REST_HNDL回调,我希望如果收到数据,那么我会将数据发送到从属,但是我可以从从服务器那里收到数据,而从属无法接收数据。

struct gattc_write_cmd *wr_char = ke_msg_alloc_dyn(gattc_write_cmd,
dest_id,src_id,
gattc_write_cmd,sizeof(struct gattc_write_cmd));

// 抵消
wr_char-> offset = 0x0000;
//光标总是0
wr_char->光标= 0x0000;
//写类型
wr_char->操作= gattc_write;
//特征值属性句柄
wr_char-> handle = 1;
//值长度
wr_char->长度= 3;
//自动执行
wr_char-> auto_execute = true;
// 价值


int8_t aa [2];
AA [0] = 9;
AA [1] = 5;

memcpy(&wr_char-> value [0],aa,2);

//发送消息
ke_msg_send(wr_char);

谢谢

本杰明

1个月前

pm_dialog

嗨,本杰明图,

感谢您的问题。您可以使用BLE通知。请检查DA14585/DA14586/DA14531中央实施这说明了如何执行Gatt读/写作作为中心。

在user_ble_gatt.c源文件中,您可以找到user_ble_gatt_write()。该功能执行GATT写入。您应该将gattc_write_cmd命令发送到堆栈。

谢谢,pm_dialog

1个月前

本杰明图 135分

嗨对话,

非常感谢您的快速回答。

我发现user_ble_gatt_write()无论如何,与上述功能相似,我用不同的参数测试了该函数,但仍然无法在从属中接收数据。

您可以帮助提供有关如何使用此功能的参数的示例?从图片显示的情况下,从灯蓝色可以接收数据,如果该功能可以发送与图片显示的数据相同的数据,我相信这可能是一个很好的起点,我将能够使用此功能。

再次感谢。

本杰明

附件 尺寸
1.JPG 157.96 kb
2.JPG 159.6 kb
3.JPG 168.29 kb

1个月前

本杰明图 135分

嗨对话,

你能给我答复吗?

非常感谢

本杰明

1个月前

pm_dialog

嗨,本杰明,

让我检查一下,我会回到你身边。

谢谢,pm_dialog

1个月前

本杰明图 135分

嗨对话,

非常感谢您的回复,这些天我也尝试了许多参数,但仍然无法获得好的结果,

因此,我希望您能得到您的答案。

再次感谢

本杰明

1个月前

本杰明图 135分

嗨对话,

即使是一个例子也将非常有帮助,希望您能提供帮助。

非常感谢

本杰明

1个月前

pm_dialog

嗨,本杰明,

为延迟道歉。快速问题:您想在Gap Central设备上写哪种服务?是自定义服务吗?

您能否分享如何调用user_ble_gatt_write()?

谢谢,pm_dialog

1个月前

本杰明图 135分

嗨对话,

非常感谢您的回复。

我打了电话user_ble_gatt_write()在功能中user_catch_rest_hndl()。

以下是我用来进行调用的代码的一部分。

570
571案例gattc_event_ind:
572 {
573
574 //以下由本杰明添加
575 int8_t aa [2];
576 AA [0] = 9;
577 AA [1] = 5;
578
579 user_ble_gatt_write(gattc_write_cmd,conn_idx,svc1_idx_led_state_val,aa,sizeof(aa));
580
581
582 //以下两行输出接收数据。
583 struct gattc_event_ind const *msg_param =(struct gattc_event_ind const *)(param);
584 Arch_printf(“ <%d> \ t”,msg_param-> value [0]);
585 //上面由本杰明添加
586
587}休息;
588
589案例GAPM_CMP_EVT:
590 {

谢谢

本杰明

1个月前

本杰明图 135分

嗨对话,

不同服务之间有什么区别?您在自定义服务中我无法进行调用是什么区别?

我的问题是,我是否可以做正确的呼叫,并且从属可以接收,任何地方都可以。

谢谢

本杰明

1个月前

本杰明图 135分

嗨对话,

还有更多信息需要我添加吗?

谢谢

本杰明。

接受的答案!

1个月前

pm_dialog

嗨,本杰明图,

请从中央实施SW示例中检查handle_svc_ind()。当收到gattc_sdp_svc_ind时,handle_svc_ind(con_idx,disc_svc);在user_catch_rest_hndl()中称为。gattc_sdp_svc_ind表示服务发现表明已经找到了服务,因此一旦找到新服务,就会触发handle_svc_ind()。如果您在handle_svc_ind()中检查代码,您会发现它发现了为BAS(enable_bas)和IAS服务(enable_ias)发现的代码。服务发现后,您可以按中央设备上的按钮。这将写入警报服务,并开始眨眼在接近记者上的LED。如果正确发送,您还应该在终端上看到写入。

因此,按下按钮时,请调用User_ble_gatt_write()以写入IAS。

对于自定义服务(SVC1_IDX_LED_STATE_VAL),您应该遵循相同的过程。在handle_svc_ind()中发现自定义服务,然后执行GATT写入正确的属性句柄。

谢谢,pm_dialog

1个月前

本杰明图 135分

嗨对话,

非常感谢您的回答,这非常有帮助。

本杰明