求助:关于IBeacon
时间:10-02
整理:3721RD
点击:
我用微信摇一摇周边摇不到自己的设备,信息如下,请问有什么问题吗? 10055 =0x2747, 19495=0x4c27
你使用的 手机是安卓还是苹果,我记得用微信摇一摇,广播数据的长度需要调整,安卓的要少一位,苹果的少一位和多一位都可以使用,最后一个字节的数据
下面是微信的测试摇一摇,肯定摇得到,其他跟微信相关的属于应用问题,需要自己去看微信的标准改了。
//微信的测试摇一摇
static uint8 advertData[] =
{
// Preamble: 0x4c000215
// 02 01 06 1A FF 4C 00 02 15: iBeacon prefix (fixed)
// UUID: E2C56DB5-DFFB-48D2-B060-D0F5A71096E0
// Major: 1 (0x0001)
// Minor: 1 (0x0001)
// Measured Power: -59 (0xc5)
0x02,
0x01,
0x06,
0x1a,
0xff,
0x4c,
0x00,
0x02,
0x15,
0xfd,
0xa5,
0x06,
0x93,
0xa4,
0xe2,
0x4f,
0xb1,
0xaf,
0xcf,
0xc6,
0xeb,
0x07,
0x64,
0x78,
0x25,
0x00,
0x0a,
0x00,
0x04,
0xc5
};
安装 TI 官方的 CC254x 开发环境
复制 C:\Texas Instruments\BLE-CC254x-1.3.2\Projects\ble\SimpleBLEBroadcaster 文件夹
粘贴到:C:\Texas Instruments\BLE-CC254x-1.3.2\Projects\ble\iBeacon
运行 IAR Embedded Workbench,点击 File > Open > Workspace
修改源代码
simpleBLEBroadcaster.c
// GAP - Advertisement data (max size = 31 bytes, though this is
// best kept short to conserve power while advertisting)
static uint8 advertData[] =
{
// Flags; this sets the device to use limited discoverable
// mode (advertises for 30 seconds at a time) instead of general
// discoverable mode (advertises indefinitely)
0x02, // length of this data
GAP_ADTYPE_FLAGS,
GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED,
// three-byte broadcast of the data "1 2 3"
0x04, // length of this data including the data type byte
GAP_ADTYPE_MANUFACTURER_SPECIFIC, // manufacturer specific advertisement data type
1,
2,
3
};
修改下面关键字
UID: E2C56DB5-DFFB-48D2-B060-D0F5A71096E0
Major: 1 (0x0001)
Minor: 1 (0x0001)
Measured Power: -59 (0xc5)
// GAP - Advertisement data (max size = 31 bytes, though this is
// best kept short to conserve power while advertisting)
static uint8 advertData[] =
{
// 25 byte ibeacon advertising data
// Preamble: 0x4c000215
// UUID: E2C56DB5-DFFB-48D2-B060-D0F5A71096E0
// Major: 1 (0x0001)
// Minor: 1 (0x0001)
// Measured Power: -59 (0xc5)
0x1A, // length of this data including the data type byte
GAP_ADTYPE_MANUFACTURER_SPECIFIC, // manufacturer specific advertisement data type
0x4c,
0x00,
0x02,
0x15,
0xe2,
0xc5,
0x6d,
0xb5,
0xdf,
0xfb,
0x48,
0xd2,
0xb0,
0x60,
0xd0,
0xf5,
0xa7,
0x10,
0x96,
0xe0,
0x00,
0x01,
0x00,
0x01,
0xc5
};
接下来修改广播类型,将下面代码
//uint8 advType = GAP_ADTYPE_ADV_NONCONN_IND;// use non-connectable advertisements
uint8 advType = GAP_ADTYPE_ADV_DISCOVER_IND; // use scannable unidirected advertisements
修改为
uint8 advType = GAP_ADTYPE_ADV_NONCONN_IND; // use non-connectable advertisements
//uint8 advType = GAP_ADTYPE_ADV_DISCOVER_IND; // use scannable unidirected advertisements
接下来修改 GAP
// Set the GAP Role Parameters
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable );
GAPRole_SetParameter( GAPROLE_ADVERT_OFF_TIME, sizeof( uint16 ), &gapRole_AdvertOffTime );
GAPRole_SetParameter( GAPROLE_SCAN_RSP_DATA, sizeof ( scanRspData ), scanRspData );
GAPRole_SetParameter( GAPROLE_ADVERT_DATA, sizeof( advertData ), advertData );
GAPRole_SetParameter( GAPROLE_ADV_EVENT_TYPE, sizeof( uint8 ), &advType );
因为 iBeacon 必须不间断广播,并且不响应任何数据请求,所以我们要修改 GAPROLE_ADVERT_OFF_TIME 和 GAPROLE_SCAN_RSP_DATA。
// Set the GAP Role Parameters
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable );
//GAPRole_SetParameter( GAPROLE_ADVERT_OFF_TIME, sizeof( uint16 ), &gapRole_AdvertOffTime );
//GAPRole_SetParameter( GAPROLE_SCAN_RSP_DATA, sizeof ( scanRspData ), scanRspData );
GAPRole_SetParameter( GAPROLE_ADVERT_DATA, sizeof( advertData ), advertData );
GAPRole_SetParameter( GAPROLE_ADV_EVENT_TYPE, sizeof( uint8 ), &advType );
保存工程后,进行编译,并通过 CCDebugger 下载程序到开发板中。
Select Project > Clean to clean the project.
Select Project > Make to make the project.
Select Project > Download and Debug to send the code to the CC2540 Key Fob
Select Debug > Go to Run the code on the CC2540 Key Fob.
官方有cc2650beacon例程
问题解决了
Ibeacon 设备如何连接呢?
蓝色天空
Ibeacon 设备如何连接呢?
这是非连接设备,可以开通微信摇一摇功能:http://wenku.baidu.com/view/32f3e91ccaaedd3383c4d3f1.html