6086|20

19

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

有关BlueNRG的 beacon应用。 [复制链接]

 
     项目背景:所有终端全是BlueNRG,没有android。一个广播,另外10个倾听广播(不关心数据信息,不用连接)。
   1, 广播设备甲进行beacon广播,甲设备指定成Peripheral外围设备有问题吗?
   2,另外10个BlueNRG 乙类设备passive scanning 甲设备的广播信息。函数aci_gap_start_general_discovery_proc()的解释是启动主动扫描的,请问那个函数可以启动 passive scanning?
   3,启动扫描后,什么时候能得到广播信息?得到的scanning result 是不是自动存储于Advertising_Report_t结构中?
   4,这种一个广播,10个倾听的模式采用Beacon的方式可以吗?
   谢谢指教!

最新回复

虾哥,还想问下,你有试过beacon发送文字、字母或者图片这些信息吗?想知道用哪个APP比较好,好多APP都会将字母转换为ASCII码欸  详情 回复 发表于 2018-10-26 15:53
点赞 关注(1)
 
 

回复
举报

9716

帖子

24

TA的资源

版主

沙发
 
1、可以使用Peripheral,不过最好用Broadcaster和Observer,乙类设备使用Observer,甲类设备使用Broadcaster
2、aci_gap_start_general_discovery_proc用于控制乙类设备进入接收模式
3、通过实现hci_le_advertising_report_event函数来接收甲类设备广播的数据,数据存在Advertising_Report数组中
4、1个设备广播可以无数个设备监听,Broadcaster和Observer或者Peripheral和Central都可以实现,Beacon只是按照对应的格式将广播数据进行包装,你可以使用Beacon格式,也可以使用其它格式

点评

再请教版主几个问题: Q1:调试中发现BlueNRG的beacon项目中Device_Init()函数内的 aci_gap_init(ROLE, 0x00, 0x08, &service_handle, &dev_name_char_handle, &appearance_char_handle); 的参数ROLE=01(Peripher  详情 回复 发表于 2018-4-10 01:21
指点的很详细!多谢  详情 回复 发表于 2018-4-9 14:04
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

19

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
littleshrimp 发表于 2018-4-9 12:54
1、可以使用Peripheral,不过最好用Broadcaster和Observer,乙类设备使用Observer,甲类设备使用Broadcaste ...

指点的很详细!多谢
 
 
 

回复

19

帖子

0

TA的资源

一粒金砂(中级)

4
 
本帖最后由 yys3210 于 2018-4-10 01:25 编辑
littleshrimp 发表于 2018-4-9 12:54
1、可以使用Peripheral,不过最好用Broadcaster和Observer,乙类设备使用Observer,甲类设备使用Broadcaste ...

再请教版主几个问题:
Q1:调试中发现BlueNRG的beacon项目中Device_Init()函数内的 aci_gap_init(ROLE, 0x00, 0x08, &service_handle, &dev_name_char_handle, &appearance_char_handle);  的参数ROLE=01(Peripheral)时Packet Sniffer能抓到广播数据;当ROLE=0x02( broadcaster)时就没有广播数据了。
  
   准备扫描部分函数如下:
   aci_gap_start_observation_proc(160,160,0,0,0,0);//启动扫描
   hci_le_advertising_report_event(1,Test_Advice);//得到广播数据.
  //Test_Advice定义:Advertising_Report_t  Test_Advice[10]; //10是随便写的,不写数则编译错误

  Q2:hci_le_set_scan_parameters(0,160,160,0,0);与aci_gap_start_observation_proc(160,160,0,0,0,0);两个函数的原型基本相同,二者有大的区别吗?
  Q3:hci_le_set_scan_parameters(0,160,160,0,0);
         hci_le_set_scan_enable(1,0);
         上面两句与aci_gap_start_observation_proc功能能等价吗?
  Q4:启动扫描后,执行函数hci_le_advertising_report_event即可就能得到广播数据?而不用等待产生了类似中断标志后,才运行该函数后加载广播数据到结构参数体中?
  Q5:函数hci_le_advertising_report_event库文件中描述第一参数为什么指定就是“1”而不能是其他大于1的数?
  第二个参数是个结构体数组Advertising_Report[],是不是该函数可以同时扫描多个广播?每个广播的event分别存储于Advertising_Report[ ]对应的结构体中?
  这样第一个参数是整数 i,则结构体数组就相应的为Advertising_Report[ i ],能这样理解吗?

点评

Broadcaster和Observer我试了一下 像你说的将aci_gap_init函数中的GAP_PERIPHERAL_ROLE改成GAP_BROADCASTER_ROLE后 在执行aci_gap_set_discoverable会报错 Error in aci_gap_set_discoverable() 0x000c google过  详情 回复 发表于 2018-4-10 13:59
 
 
 

回复

9716

帖子

24

TA的资源

版主

5
 
yys3210 发表于 2018-4-10 01:21
再请教版主几个问题:
Q1:调试中发现BlueNRG的beacon项目中Device_Init()函数内的 aci_gap_init(ROLE,  ...

Broadcaster和Observer我试了一下
像你说的将aci_gap_init函数中的GAP_PERIPHERAL_ROLE改成GAP_BROADCASTER_ROLE后
在执行aci_gap_set_discoverable会报错
Error in aci_gap_set_discoverable() 0x000c
google过,没找到Broadcaster和Observer的例程,也没找到相关资料
试过aci_gap_set_broadcast_mode和aci_gap_set_non_connectable 同样报错
Error in aci_gap_set_broadcast_mode 0x0042
Error in aci_gap_set_non_connectable 0x000c

如果使用Peripheral和Central方式可以在初始化时执行aci_gap_start_general_discovery_proc函数
通过实现hci_le_advertising_report_event函数接收广播数据
收到广播后hci_le_advertising_report_event会被调用
读取Advertising_Report[n].Data可以得到对应的广播数据

点评

请教虾哥:蓝牙规范4.0 P1739页有如下图: 图中所示,BlueNRG在Broadcaster及Observer角色时,其device name等是被禁止的,这样的话设置Broadcaster或Observer时是不是就不能用aci_gap_init()函数了?那么需要怎么来  详情 回复 发表于 2018-5-15 02:50
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

19

帖子

0

TA的资源

一粒金砂(中级)

6
 
littleshrimp 发表于 2018-4-10 13:59
Broadcaster和Observer我试了一下
像你说的将aci_gap_init函数中的GAP_PERIPHERAL_ROLE改成GAP_BROADCAS ...

请教虾哥:蓝牙规范4.0 P1739页有如下图:
图中所示,BlueNRG在Broadcaster及Observer角色时,其device name等是被禁止的,这样的话设置Broadcaster或Observer时是不是就不能用aci_gap_init()函数了?那么需要怎么来设置BLE的Broadcaster或Observer角色啊?

7.jpg (64.81 KB, 下载次数: 0)

7.jpg

点评

我觉得aci_gap_init的role参数既然可以选择Broadcaster和Observer就应该能用  详情 回复 发表于 2018-5-15 10:13
 
 
 

回复

9716

帖子

24

TA的资源

版主

7
 
yys3210 发表于 2018-5-15 02:50
请教虾哥:蓝牙规范4.0 P1739页有如下图:
图中所示,BlueNRG在Broadcaster及Observer角色时,其device  ...

我觉得aci_gap_init的role参数既然可以选择Broadcaster和Observer就应该能用
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

48

帖子

0

TA的资源

一粒金砂(中级)

8
 
littleshrimp 发表于 2018-5-15 10:13
我觉得aci_gap_init的role参数既然可以选择Broadcaster和Observer就应该能用

版主,第一次使用ST的IDB007v1,求教为何下载官方Beacon例程,手机APP检测不到开发板的设备名称,将手机移动不同的距离,应该是检测到开发板上的蓝牙,但是一直都是显示unnamed,ST的函数又都是封装好的,要怎么调啊。。。求回复啊,非常感谢

点评

Beacon是无连接的不会广播设备名称,BLUENRG广播数据,手机接收数据 广播的数据由BLE_Beacon_main.c中的adv_data数组或manuf_data数组决定 如果想让bluenrg广播名称可以试试BLE_SensorDemo例程,可与手机建立连  详情 回复 发表于 2018-10-23 12:52
 
 
 

回复

9716

帖子

24

TA的资源

版主

9
 
逆风寒 发表于 2018-10-23 10:10
版主,第一次使用ST的IDB007v1,求教为何下载官方Beacon例程,手机APP检测不到开发板的设备名称,将手机 ...

Beacon是无连接的不会广播设备名称,BLUENRG广播数据,手机接收数据
广播的数据由BLE_Beacon_main.c中的adv_data数组或manuf_data数组决定

如果想让bluenrg广播名称可以试试BLE_SensorDemo例程,可与手机建立连接
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

48

帖子

0

TA的资源

一粒金砂(中级)

10
 
littleshrimp 发表于 2018-10-23 12:52
Beacon是无连接的不会广播设备名称,BLUENRG广播数据,手机接收数据
广播的数据由BLE_Beacon_main.c中的 ...

谢谢版主,我想问ios手机上下载了lightblue,开发板运行Beacon例程,lightblue上只能显示出rssi,因为也不能连接,那手机要怎么查看接收数据啊
 
 
 

回复

9716

帖子

24

TA的资源

版主

11
 
逆风寒 发表于 2018-10-23 14:05
谢谢版主,我想问ios手机上下载了lightblue,开发板运行Beacon例程,lightblue上只能显示出rssi,因为也 ...

你可以在应用商店里搜索beacon看看有没有现成应用
一般只能接受标准格式的的数据包
自定义数据在android里用app直接读取广播包就能得到广播数据、mac和rssi
ios应该也差不多
 
 
 

回复

48

帖子

0

TA的资源

一粒金砂(中级)

12
 
littleshrimp 发表于 2018-10-23 16:34
你可以在应用商店里搜索beacon看看有没有现成应用
一般只能接受标准格式的的数据包
自定义数据在androi ...

十分感谢版主答复
 
 
 

回复

48

帖子

0

TA的资源

一粒金砂(中级)

13
 
littleshrimp 发表于 2018-10-23 16:34
你可以在应用商店里搜索beacon看看有没有现成应用
一般只能接受标准格式的的数据包
自定义数据在androi ...

版主,如果想同时实现beacon和串口透传功能,是直接将beacon和chat(service)的例程融合就可以吗?

点评

beacon是单向的,用于发送数据包的bluenrg只能发送数据 你可以单独把UART代码加到工程里,将接收到的数据存入数组,判断收到某一个字符(比如\r、\n)时将数据的内容更新到广播数组,然后开启发送再把UART接收数组  详情 回复 发表于 2018-10-23 20:01
 
 
 

回复

9716

帖子

24

TA的资源

版主

14
 
逆风寒 发表于 2018-10-23 19:52
版主,如果想同时实现beacon和串口透传功能,是直接将beacon和chat(service)的例程融合就可以吗?

beacon是单向的,用于发送数据包的bluenrg只能发送数据
你可以单独把UART代码加到工程里,将接收到的数据存入数组,判断收到某一个字符(比如\r、\n)时将数据的内容更新到广播数组,然后开启发送再把UART接收数组清空,准备接收下一个数据包

一搬接收广播包的会是手机,如果你还想用另一个bluenrg接收广播方法类似,也是在工程里引入UART代码,在收到蓝牙广播包时把数据通过UART发送到PC之类的上位机上

点评

版主,Beacon的时候,bluenrg是设置为不连接的,那手机还怎么给bluenrg发送数据啊,发不了数据,怎么实现将手机端的数据通过串口发送给PC。。。  详情 回复 发表于 2018-10-24 11:13
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

48

帖子

0

TA的资源

一粒金砂(中级)

15
 
littleshrimp 发表于 2018-10-23 20:01
beacon是单向的,用于发送数据包的bluenrg只能发送数据
你可以单独把UART代码加到工程里,将接收到的数 ...

版主,Beacon的时候,bluenrg是设置为不连接的,那手机还怎么给bluenrg发送数据啊,发不了数据,怎么实现将手机端的数据通过串口发送给PC。。。

点评

单向发送 意思是pc通过串口控制广播数据发送 另一端像手机一样接收广播 如果pc没有蓝牙可以使用另一块bluenrg接收广播再通过串口发送给pc 如果双向通信就不要使用beacon这种方式了  详情 回复 发表于 2018-10-24 15:15
 
 
 

回复

869

帖子

0

TA的资源

禁止发言

16
 
楼主厉害,支持楼主
 
 
 

回复

9716

帖子

24

TA的资源

版主

17
 
逆风寒 发表于 2018-10-24 11:13
版主,Beacon的时候,bluenrg是设置为不连接的,那手机还怎么给bluenrg发送数据啊,发不了数据,怎么实现 ...

单向发送 意思是pc通过串口控制广播数据发送 另一端像手机一样接收广播 如果pc没有蓝牙可以使用另一块bluenrg接收广播再通过串口发送给pc
如果双向通信就不要使用beacon这种方式了

点评

虾哥,如果想要BlueNRG一直发广播,同时又要保证用户手机APP发送数据时BlueNRG可以接收数据,你觉得采用什么方式最好啊  详情 回复 发表于 2018-10-25 09:34
 
 
 

回复

48

帖子

0

TA的资源

一粒金砂(中级)

18
 
littleshrimp 发表于 2018-10-24 15:15
单向发送 意思是pc通过串口控制广播数据发送 另一端像手机一样接收广播 如果pc没有蓝牙可以使用另一块blu ...

虾哥,如果想要BlueNRG一直发广播,同时又要保证用户手机APP发送数据时BlueNRG可以接收数据,你觉得采用什么方式最好啊

点评

你说的这个比较复杂,一片bluenrg不一定能实现,因为通常在广播的时候要么只广播,要么只等待手机与其连接 那种有连接的通信方式不能满足你的要求吗?  详情 回复 发表于 2018-10-25 13:49
 
 
 

回复

9716

帖子

24

TA的资源

版主

19
 
逆风寒 发表于 2018-10-25 09:34
虾哥,如果想要BlueNRG一直发广播,同时又要保证用户手机APP发送数据时BlueNRG可以接收数据,你觉得采用 ...

你说的这个比较复杂,一片bluenrg不一定能实现,因为通常在广播的时候要么只广播,要么只等待手机与其连接
那种有连接的通信方式不能满足你的要求吗?

点评

嗯,本来想的是chat的例程里也可以放入广播信息,但是老师要我用Beacon的方式做信息推送,同时还需要我做串口透传的功能,说是让开两个进程。。。  详情 回复 发表于 2018-10-25 16:09
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

48

帖子

0

TA的资源

一粒金砂(中级)

20
 
littleshrimp 发表于 2018-10-25 13:49
你说的这个比较复杂,一片bluenrg不一定能实现,因为通常在广播的时候要么只广播,要么只等待手机与其连 ...

嗯,本来想的是chat的例程里也可以放入广播信息,但是老师要我用Beacon的方式做信息推送,同时还需要我做串口透传的功能,说是让开两个进程。。。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表