您好!
是否有任何示例、其中外部中断器件仅在广播模式下唤醒并发送特定数据? 我已经使用了 simple_peripheral 示例、并且能够将器件置于待机模式并在发生外部中断时唤醒。 但是、该示例提供了可连接模式。
我只想在四个不同通道上发生外部中断时发送传感器数据一次、并将器件恢复睡眠模式。 简单的广播设备是否是正确的示例? 我如何每次更改广播数据?
谢谢
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
是否有任何示例、其中外部中断器件仅在广播模式下唤醒并发送特定数据? 我已经使用了 simple_peripheral 示例、并且能够将器件置于待机模式并在发生外部中断时唤醒。 但是、该示例提供了可连接模式。
我只想在四个不同通道上发生外部中断时发送传感器数据一次、并将器件恢复睡眠模式。 简单的广播设备是否是正确的示例? 我如何每次更改广播数据?
谢谢
我建议您使用 simple_broadcaster 来执行此操作。
1.使用以下命令停止广播:
uint8_t initial_advertising_enable = false; GAPRole_SetParameter (GAPROLE_advertise_enabled、sizeof (uint8_t)、 初始广播启用(&P);
2.使用 以下命令更改广播数据 advertData:
GAPRole_SetParameter (GAPROLE_adverted_data、sizeof (advertData)、advertData);
3.使用以下命令再次启用广播:
uint8_t initial_advertising_enable = true; GAPRole_SetParameter (GAPROLE_advertise_enabled、sizeof (uint8_t)、 初始广播启用(&P);
我在 simple_Peripheral 示例中尝试了相同的方法、但它不会更新广播数据。
我在回调函数之一中设置了后续操作
#define ADV_MAX_LEN 31.
#define ADVDATA_Manuf_DATA_IDX 5.
uint8 i = 0;
静态 uint8 advData = 0;
advertData[i++]= 0x02; //此数据的长度
advertData[i++]= GAP_ADTYPE_FLAGS;
advertData[i++]= DEFAULT_DISCOVERATE_MODE | GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED;
//初始设置自定义用户数据
advertData[i++]= ADV_MAX_LEN - I - 1;//此数据的长度
advertData[i++]= GAP_ADTYPE_MANUFACTURER_SPECIFIC;//此数据的长度
//使用自定义的 ADV 数据(即0x00、0x01、0x02等)填充剩余的数据
对于(i = ADVDATA_Manuf_data_IDX;i < ADV_MAX_LEN;i++)
advertData[i]= advData++;
uint8 status1 = GAPRole_SetParameter (GAPROLE_advertise_data、sizeof (advertData)、advertData);
我从这里得到了这一点:
但我的手机扫描仪上的原始数据与以前的数据相同。 我清除了历史记录并从 电话历史记录中删除了所有设备。
这与智能手机无关、但我正在更新引脚中断回调函数中的广播参数。 需要从 SimpleBLEPeripheral_taskFxn()更新广播数据。 现在、我将按预期更新广播包。
但是、当我在智能手机上看到原始数据时、它包含 广播数据+扫描响应数据(如名称"SimpleBLEPeripheral")。 这是正常的吗? 我在 Android 上使用 BLE Scanner。
在 simple_Peripheral 示例中、是否还有禁用连接模式的方法?
谢谢
我认为包含 广播数据+扫描响应数据(如名称"SimpleBLEPeripheral")是正常现象。
2.您可以使用"GAPRole_SetParameter (GAPROLE_ADV_NONCONN_ENABLED、sizeof (uint8_t)、&advertEnabled);"而不是"GAPRole_SetParameter (GAPROLE_advertise_enabled、sizeof (uint8_t)、&connectEnabled);启用非广播表。