DA14530和DA14531
一年前
发布的BenjaminDu160点 12个回复嗨,对话框中,
简而言之,我的问题是如何将数据发送到slave中多用途的例子。
让我解释一下我的问题:
我使用586年DA14531-DA14585 _multirole连接多个slave的示例(我使用ble_app_profile例如,我可以连接多个slave,而master(多用途)可以从slave接收数据,但我不知道如何发送数据给slave,我用iPad连接slave(ble_app_profile示例),slave可以接收数据。
我测试了以下内容user_catch_rest_hndl回调,我希望如果有数据接收到,那么我将数据发送给slave,但是我可以从slave接收数据,而slave不能接收数据。
构造gattc_write_cmd *wr_char = KE_MSG_ALLOC_DYN(gattc_write_cmd,
dest_id src_id,
(struct Gattc_write_cmd);
/ /抵消
Wr_char ->offset = 0x0000;
//游标总是0
Wr_char ->游标= 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);
谢谢
便雅悯
一年前
嗨,对话框中,
非常感谢你的快速回答。
我发现user_ble_gatt_write ()与我在上面使用的函数类似,无论如何,我用不同的参数测试了函数,但仍然无法在从机中接收数据。
你能举例说明如何使用这个函数的参数吗?如图所示,从站可以接收来自LightBlue的数据,如果函数可以发送如图所示的数据,我相信这将是一个非常好的起点,我将能够使用这个函数。
再次感谢。
便雅悯
附件 | 大小 |
---|---|
1. jpg | 157.96 KB |
2. jpg | 159.6 KB |
3. jpg | 168.29 KB |
一年前
嗨,对话框中,
你能给我一个答复吗?
非常感谢
便雅悯
一年前
你好,本杰明,
让我检查一下,然后给你答复。
谢谢,PM_Dialog
一年前
嗨,对话框中,
非常感谢你的回复,这几天我也尝试了很多参数,但是仍然没有得到很好的结果,
所以我希望你能给我一个答案。
再次感谢
便雅悯
一年前
嗨,对话框中,
即使是一个例子也会很有帮助,希望你能有所帮助。
非常感谢
便雅悯
一年前
你好,本杰明,
很抱歉耽搁了。一个简单的问题:您希望在哪个服务中从GAP中心设备写入数据?是海关的问题吗?
你能分享user_ble_gatt_write()是如何被调用的吗?
谢谢,PM_Dialog
一年前
嗨,对话框中,
非常感谢您的回复。
我叫user_ble_gatt_write ()在功能上user_catch_rest_hndl()。
下面是我用来调用的部分代码。
570
571 case 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 //后面两行输出接收到的数据。
struct 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 case GAPM_CMP_EVT:
590年{
谢谢
便雅悯
一年前
嗨,对话框中,
不同的服务有什么不同?你是说在客户服务中我不能打电话吗?
我的问题是,如果我能做正确的召唤,奴隶可以接收,任何地方都可以。
谢谢
便雅悯
一年前
嗨,对话框中,
还有什么需要我补充的吗?
谢谢
便雅悯。
一年前
嗨BenjaminDu,
请检查中央实现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
一年前
嗨,对话框中,
非常感谢你的回答,这很有帮助。
便雅悯
一年前
嗨BenjaminDu,
谢谢你的问题。你可以使用BLE通知。请查阅DA14585/DA14586/DA14531中央执行演示了如何作为一个中心执行GATT读写。
在user_ble_gatt_c源文件中,您将找到user_ble_gatt_write()。该函数执行gatt写入。你应该向堆栈发送一个GATTC_WRITE_CMD命令。
谢谢,PM_Dialog