设为首页收藏本站

Discuz! Board

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 10949|回复: 13
打印 上一主题 下一主题

青风,想向你请教下,关于外设和iPhone的连接过程。

[复制链接]

4

主题

28

帖子

93

积分

注册会员

Rank: 2

积分
93
跳转到指定楼层
楼主
沉默的暴躁 发表于 2015-11-24 14:56:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Hi 青风 And All:
    我手上一个项目,有关ble midi(类似于ble串口通信)的,Peripheral选择的是nrf51822,Central端选择的是IOS系统。我从苹果开发社区下载了相关的规范书。但是目前不能够建立连接。PS:我的代码是在ble uart的基础上,进行的二次开发。
在ble协议栈事件中,整个连接过程会调用如下方法:
   1.响应on_ble_evt方法的BLE_GAP_EVT_CONNECTED的事件。
   2.响应ble_conn_params_on_ble_evt方法的on_connect事件,并会执行conn_params_negotiation();方法。
   3.响应ble_nus_on_ble_evt(&m_nus, p_ble_evt); 的on_connect事件。    PS:此刻是否已经建立起连接了?为何以后还会断开连接呢?
   4.on_ble_evt方法  ----- default
   5.ble_conn_params_on_ble_evt方法   on_write事件,if (    (p_evt_write->handle == m_conn_params_config.start_on_notify_cccd_handle)  //p_evt_write->handle == 0x000B  data = 0x02       &&        (p_evt_write->len == 2)    )   该判断执行失败。
   6.ble_nus_on_ble_evt方法的on_write事件,if (
        (p_evt_write->handle == p_nus->rx_handles.cccd_handle) //验证回调函数是否已经设置
        //(p_evt_write->handle == p_nus->midi_io_handles.cccd_handle) //验证回调函数是否已经设置
        &&
        (p_evt_write->len == 2)
       )  
      判断和
      if (
             (p_evt_write->handle == p_nus->rx_handles.value_handle)  //验证回调函数是否已经设置  ,the before code :     p_nus->tx_handles.value_handle   //changed by kobew
             //(p_evt_write->handle == p_nus->midi_io_handles.value_handle)
             &&
             (p_nus->data_handler != NULL)
            )
   均没有执行成功。  并且p_ble_evt->evt.gatts_evt.params.write.data[0] = 0x02   
  7. on_ble_evt 、ble_conn_params_on_ble_evt、ble_nus_on_ble_evt方法均会相继调用on_disconnect。
  8.on_ble_evt的BLE_GAP_EVT_TIMEOUT事件

请问,会调用on_write方法,是否说明这些数据是否是central端发送过来用于配对使用的呢?还是说,我在前面基础部分就有哪些关键性的东西忽略了?还望admin能指点下。或者告诉我,我应该照着哪个方向试试,可能会解决问题。谢谢。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

4

主题

28

帖子

93

积分

注册会员

Rank: 2

积分
93
沙发
 楼主| 沉默的暴躁 发表于 2015-11-24 15:48:51 | 只看该作者
有人说,连接请求发出后,会有一套为从设备准备的连接参数。上面的数据该不会是连接参数吧。另外,广播设备如何接收连接呀?
回复 支持 反对

使用道具 举报

4

主题

28

帖子

93

积分

注册会员

Rank: 2

积分
93
板凳
 楼主| 沉默的暴躁 发表于 2015-11-24 16:11:02 | 只看该作者
在接收到connect事件后,在执行conn_params_negotiation() 中。我的代码执行is_conn_params_ok方法会return false 。因为我设置max connecton interval小于0x18了。  我的文档只有告诉我最小连接间隔应该是多少,但是不知道最大应该设置为多少呢?
回复 支持 反对

使用道具 举报

243

主题

1706

帖子

6151

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6151
地板
admin 发表于 2015-11-25 12:51:52 | 只看该作者

回帖奖励 +1

沉默的暴躁 发表于 2015-11-24 16:11
在接收到connect事件后,在执行conn_params_negotiation() 中。我的代码执行is_conn_params_ok方法会return ...

问下你ios用的什么app处理的?
回复 支持 反对

使用道具 举报

4

主题

28

帖子

93

积分

注册会员

Rank: 2

积分
93
5#
 楼主| 沉默的暴躁 发表于 2015-11-25 14:17:42 | 只看该作者
因为不知到你是否接触过midi,所以我没有过多的描述。IOS上light bluetooth是可以连接的。但是支持ble midi 的app发送连接,就不能连接成功。
回复 支持 反对

使用道具 举报

4

主题

28

帖子

93

积分

注册会员

Rank: 2

积分
93
6#
 楼主| 沉默的暴躁 发表于 2015-11-25 14:32:02 | 只看该作者
在ble uart实验中,on_ble_evt(p_ble_evt);
    ble_conn_params_on_ble_evt(p_ble_evt);
    ble_nus_on_ble_evt(&m_nus, p_ble_evt);  这三个方法,调用顺序有规定吗?
回复 支持 反对

使用道具 举报

243

主题

1706

帖子

6151

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6151
7#
admin 发表于 2015-11-25 15:15:34 | 只看该作者
沉默的暴躁 发表于 2015-11-25 14:17
因为不知到你是否接触过midi,所以我没有过多的描述。IOS上light bluetooth是可以连接的。但是支持ble midi ...

苹果的识别识别码 需要把,和ibeacon里一样的
回复 支持 反对

使用道具 举报

4

主题

28

帖子

93

积分

注册会员

Rank: 2

积分
93
8#
 楼主| 沉默的暴躁 发表于 2015-11-26 09:36:11 | 只看该作者
青风,有以nordic芯片为例子的中文ble 学习教程吗?好像网上TI的比较多,如果找不到,学习TI的是不是也可以啊?原理相同,也能有帮助吧?
回复 支持 反对

使用道具 举报

243

主题

1706

帖子

6151

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6151
9#
admin 发表于 2015-11-26 10:40:06 | 只看该作者
沉默的暴躁 发表于 2015-11-26 09:36
青风,有以nordic芯片为例子的中文ble 学习教程吗?好像网上TI的比较多,如果找不到,学习TI的是不是也可以 ...

我们产品光盘里不是有详解篇的教程么。你可以在找本蓝牙原理的书一起看。TI的就是编程方面区别比较大
回复 支持 反对

使用道具 举报

4

主题

28

帖子

93

积分

注册会员

Rank: 2

积分
93
10#
 楼主| 沉默的暴躁 发表于 2015-11-26 16:31:22 | 只看该作者
我的案子中,应用层的on_write函数会被调用,但是ble_evt_t 事件参数的连接句柄是0。为什么呢?在响应协议栈事件时,已经调用过on_connect是否证明已经建立过连接了。接下来之所以会调用on_write是打算配对吗?
回复 支持 反对

使用道具 举报

4

主题

28

帖子

93

积分

注册会员

Rank: 2

积分
93
11#
 楼主| 沉默的暴躁 发表于 2015-11-26 16:52:23 | 只看该作者
C:\Users\kobe\Desktop\temp.png  像这样的要求,我需要设置哪些参数呀?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

243

主题

1706

帖子

6151

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6151
12#
admin 发表于 2015-11-26 18:43:46 | 只看该作者
沉默的暴躁 发表于 2015-11-26 16:52
像这样的要求,我需要设置哪些参数呀?

读,写,通知,这就是和我们前面两个实验用的属性相同,LED的读写,按键通知
回复 支持 反对

使用道具 举报

4

主题

28

帖子

93

积分

注册会员

Rank: 2

积分
93
13#
 楼主| 沉默的暴躁 发表于 2015-11-27 08:56:27 | 只看该作者
属性中包含了,Pairing required 。  需要配对,但这种配对应该和“两部手机配对输入同样的passkey来配对”的方式不一样吧?有以nordic芯片配对的例子吗?
回复 支持 反对

使用道具 举报

4

主题

28

帖子

93

积分

注册会员

Rank: 2

积分
93
14#
 楼主| 沉默的暴躁 发表于 2015-11-27 10:56:35 | 只看该作者
青风,我的案例中,对特性的描述中,说是需要加密和写一定不要回复。请问该怎么实现?我在特性添加函数中,将BLE_GAP_CONN_SEC_MODE_SET_OPEN(&cccd_md.read_perm);改成了BLE_GAP_CONN_SEC_MODE_SET_ENC_NO_MITM(&cccd_md.read_perm);后,设备不能进入广播模式了?
回复 支持 反对

使用道具 举报

Archiver|手机版|小黑屋|Comsenz Inc.   

GMT+8, 2024-11-22 20:16 , Processed in 0.388652 second(s), 29 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表