跳到主要内容

MultiRole示例发送数据

1个月前

MultiRole示例发送数据

张贴了本杰德杜135分 12回复
0旋转

嗨对话框,

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

让我解释一下我的问题:

我用da14531-da14585 586_multole_example与多奴(我使用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-> CURSOR = 0x0000;
//写入类型
WR_CHAR->操作= GATTC_WRITE;
//特征值属性句柄
WR_CHAR->手柄= 1;
//值长度
WR_CHAR->长度= 3;
//自动执行
wr_char-> auto_execute = true;
// 价值


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

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

//发送消息
KE_MSG_SEND(WR_CHAR);

谢谢

本杰明

1个月前

PM_DIALOG.

嗨Benjamindu,

谢谢你的问题。您可以使用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分

嗨对话框,

甚至一个例子也会非常帮助,希望你能提供帮助。

非常感谢

本杰明

4周前

PM_DIALOG.

嗨本杰明,

为延迟道歉。快速问题:您希望从间隙中央设备写入哪种服务?是定制服务吗?

您能分享user_ble_gatt_write()的调用方式吗?

谢谢,PM_DIALOG.

4周前

本杰德杜 135分

嗨对话框,

非常感谢您的回复。

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

以下是我用于执行调用的代码的一部分。

570.
571案例gattc_event_ind:
572 {
573.
574 //以下添加Benjamin
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结构gattc_event_ind const * msg_param =(struct gattc_event_ind const *)(param);
584 ARCH_PRINTF(“<%d> \ t”,msg_param->值[0]);
585 //上面由Benjamin添加
586.
587}休息;
588.
589案例GAPM_CMP_EVT:
590 {

谢谢

本杰明

4周前

本杰德杜 135分

嗨对话框,

不同服务之间有什么区别?你的意思是在自定义服务中我不能打电话?

我的问题是,如果我可以做正确的调用,从而可以接收,任何地方都可以。

谢谢

本杰明

3个星期前

本杰德杜 135分

嗨对话框,

更多信息需要我添加?

谢谢

本杰明。

接受答案!

3个星期前

PM_DIALOG.

嗨Benjamindu,

请从中央实施SW示例检查Handle_svc_ind()。当收到GattC_SDP_SVC_ind时,Handle_svc_ind(con_idx,disc_svc);在user_catch_rest_hndl()中调用。gattc_sdp_svc_ind意味着服务发现表示已找到服务,因此在找到新服务后,触发句柄_svc_ind()。如果在HANDER_SVC_IND()中检查代码,则会看到它发现BAS(ENABLE_BAS)和IAS服务(ENABLE_IAS)发现。服务发现后,您可以按中心设备上的按钮。这将写入警报服务,并开始在邻近记者上闪烁LED。如果正确发送,您还应该看到终端的写入。

因此,按下按钮时,将调用user_ble_gatt_write()以便写入IAS。

在自定义服务(SVC1_IDX_LED_STATE_VAL)的情况下,您应该按照相同的过程。在hange_svc_ind()中发现自定义服务,然后执行GATT写入正确的属性句柄。

谢谢,PM_DIALOG.

2个星期前

本杰德杜 135分

嗨对话框,

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

本杰明