7个帖子/ 0新
最后一篇
工艺品
离线
最后一次露面:3年3个月前
加入:2014-12-17 05:34
扫描仪错误

你好。
我正在测试一个ble扫描仪。
我在一个新项目中实现了扫描仪。
扫描仪命令中发生错误。请参阅下面的代码

void app_start_scanning(void)
{
ke_state_set(task_app,app_connectable);

ARCH_PRINTF(“app_start_scanning \ r \ n”);
struct gapm_start_scan_cmd * msg = ke_msg_alloc(gapm_start_scan_cmd,task_gapm,task_app,gapm_start_scan_cmd);
msg-> mode = gap_observer_mode;// gap_gen_discovery;
msg-> op.code = gapm_scan_active;// gapm_scan_passive;
msg-> op.addr_src = gapm_public_addr;
// msg-> filt_policy = scan_allow_adv_all;// scan_allow_adv_wlst;// scan_allow_adv_all;
味精- > filter_duplic = SCAN_FILT_DUPLIC_EN;
msg->间隔= 10;
味精- >窗口= 5;
KE_MSG_SEND(MSG);
返回;
}

在以下代码中,返回错误代码。
GAPM_CMP_EVT_HANDLER - 操作:16,状态:0x42
不支持GAPM_SCAN_PASSIVE。
int gapm_cmp_evt_handler(ke_msg_id_t const msgs,struct gapm_cmp_evt const * param,ke_task_id_t const dest_id,ke_task_id_t const src_id)
{
arch_printf("gapm_cmp_evt_handler -操作:%d,状态:0x%X \r\n", param->操作,param->状态);
.......
}

这是一个完整的日志。
GAPM_CMP_EVT_HANDLER - 操作:1,状态:0x0
GAPM_CMP_EVT_HANDLER - 操作:3,状态:0x0
app_set_dev_config_complete_func.
app_start_scanning.
GAPM_CMP_EVT_HANDLER - 操作:16,状态:0x42
app_scanning_completed_func.

我需要预定义的扫描仪吗?
租赁帮助我。

设备:
工艺品
离线
最后一次露面:3年3个月前
加入:2014-12-17 05:34
它看起来像下面的代码

看起来下面的代码被修改和扫描了。

Void app_configuration_func(ke_task_id_t const task_id, struct gapm_set_dev_config_cmd *cmd)
{

//操作选择
cmd - >操作= GAPM_SET_DEV_CONFIG;

//设备角色
cmd->角色= gap_central_mst;

//定义最大传输单元
cmd-> max_mtu = app_cfg_max_mtu;
}

似乎被扫描的设备只是电视。
其他BLE设备似乎没有检测到它。
我无法检测到我的da14580 ble。
是什么原因?
如果在app_start_scanning中更改选项,则不会搜索它。

mt_dialog.
离线
最后一次露面:三个月三个星期前
职员
加入:2015-06-08 11:34
嗨工艺品,

嗨工艺品,

为了能够扫描设备,需要将设备配置为中央或作为观察者,使您的设备配置为外设或广播公司,因此您不会扫描,因为这些操作不支持那些角色。

关于你只能追踪你的电视这一事实,当你发送扫描命令时,你填写的选项决定了你可以扫描哪种设备,你可以通过检查rw - bly -GAP- is .pdf(你可以在支持门户网站的Profiles & API documents部分的文档标签下找到文档-GAP接口规范)来检查这些配置做了什么。还要注意,常规发现和有限发现中的扫描命令只持续10秒,之后设备将停止扫描,您将不得不重新发出扫描命令。还要确保您拥有的设备实际上正在发布广告,并且应该在.app_on_adv_report_ind回调中捕获广告设备。

谢谢mt_dialog.

工艺品
离线
最后一次露面:3年3个月前
加入:2014-12-17 05:34
嗨MT_dialog

嗨MT_dialog

感谢你的回复。
我必须更改哪些选项以扫描所有设备?
更改选项不会搜索所有设备。

正如您在下面的代码中看到的,没有完成任何搜索。
msg-> mode = gap_gen_discovery;

即使您查看文档,也没有特别的扫描指南。

我再次测试为下面的代码。
电视一被扫描就被扫描,但其他设备要经过很长一段时间才被扫描。
如果你在你的智能手机上搜索BLE,它将被立即搜索。
原因是什么?
void app_start_scanning(void)
{
ke_state_set(task_app,app_connectable);

ARCH_PRINTF(“app_start_scanning \ r \ n”);
struct gapm_start_scan_cmd * msg = ke_msg_alloc(gapm_start_scan_cmd,task_gapm,task_app,gapm_start_scan_cmd);
msg-> mode = gap_observer_mode;// gap_observer_mode;// gap_gen_discovery;
msg-> op.code = gapm_scan_passive;// gapm_scan_active;// gapm_scan_passive;
msg-> op.addr_src = gapm_public_addr;
msg-> filt_policy = scan_allow_adv_all;// scan_allow_adv_wlst;// scan_allow_adv_all;
味精- > filter_duplic = SCAN_FILT_DUPLIC_EN;/ / SCAN_FILT_DUPLIC_DIS;/ / SCAN_FILT_DUPLIC_EN;
msg->间隔= 500;
msg->窗口= 100;
KE_MSG_SEND(MSG);
返回;
}

请帮我。

mt_dialog.
离线
最后一次露面:三个月三个星期前
职员
加入:2015-06-08 11:34
嗨工艺品,

嗨工艺品,

为了扫描所有类型的广告字符串,您必须将扫描模式设置为GAP_OBSERVER_MODE,如图所示,这种扫描将返回目前广告的BLE设备的任何类型的广告字符串以及扫描过程永远不会超时,你只能通过使用gapm_cancel_cmd来阻止它。GAP_GEN_MODE将返回仅在有限或通用模式下广告的设备。正如我所提到的那样,确保设备确实是广告。没有特殊的指南有序如何操作扫描过程,只需在扫描命令中执行每个配置的规范,请查看主机侧的DSP示例并检查user_scan_start()函数,可以拍摄作为参考。

现在,如果要扫描的设备需要时间,您可以尝试不过滤重复的广告消息(如果您打印过多的数据,虽然这最终最终可重置),您也可以尝试降低您的值扫描间隔和扫描窗口,您当前拥有的值每32.5ms扫描62.5ms,也许是您使用的设备不经常宣传。此外,您看到其他电话扫描仪上的广告设备(我假设的Android)可能是因为那些设备被缓存,并且Android并不显示在该扫描实例上发现的设备。

谢谢mt_dialog.

工艺品
离线
最后一次露面:3年3个月前
加入:2014-12-17 05:34
嗨MT_dialog

嗨MT_dialog
感谢你的回复。

我又试了一次。
似乎是不可能搜索的,因为发送和接收设备的灵敏度不是很好。

有RSSI值,意思是'100'是'-100dBm'?

mt_dialog.
离线
最后一次露面:三个月三个星期前
职员
加入:2015-06-08 11:34
嗨工艺品,

嗨工艺品,

值为-100dBm的RSSI在BLE中没有含义(它是一个非常周的接收),但我不确定我是否得到你的问题。你得到的100是什么?您是否在常见问题解答如何正确翻译DBM中的值https://support.dialog-semicondiondiondiondum/guide/faq-da1458x-software-peri ...检查“如何读取RSSI值并将其转换为dBm”。

谢谢mt_dialog.