扫描仪错误

7帖子 / 0新
最后一篇文章
工艺品
离线
最后一次露面:3年1个月前
加入: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;
msg-> filter_duplic = scan_filt_duplic_en;
msg->间隔= 10;
msg-> window = 5;
ke_msg_send(msg);
返回;
}

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

这是一个完整的日志。
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年1个月前
加入:2014-12-17 05:34
看起来像下面的代码

看起来下面的代码经过修改和扫描。

void app_configuration_func(ke_task_id_id_t const tast_id,struct gapm_set_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
离线
最后一次露面:2个月2周前
职员
加入:2015-06-08 11:34
嗨,Craftwizard,

嗨,Craftwizard,

首先要扫描该设备,需要将设备配置为中央或观察者,将设备配置为外围设备或您无法扫描的广播公司,因为这些操作不受那些角色。

关于您只能跟踪电视的事实,发送扫描命令确定可以扫描的设备时填充的选项,您将能够通过检查RW-BLE-GAP检查这些配置的操作-is.pdf(您可以在“配置文件&API文档”部分的“文档”选项卡下的“支持门户”上找到该文档 - GAP接口规范)。还要注意,一般发现和有限发现中的扫描命令仅持续10秒,此后该设备将停止扫描,您将不得不重新发出扫描命令。另外,请确保您拥有的设备实际上是广告,并且您应该在.app_on_adv_report_ind回调中捕获广告设备。

谢谢mt_dialog

工艺品
离线
最后一次露面:3年1个月前
加入: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;
msg-> filter_duplic = scan_filt_duplic_en;// scan_filt_duplic_dis;// scan_filt_duplic_en;
msg->间隔= 500;
msg-> window = 100;
ke_msg_send(msg);
返回;
}

请帮我。

mt_dialog
离线
最后一次露面:2个月2周前
职员
加入:2015-06-08 11:34
嗨,Craftwizard,

嗨,Craftwizard,

为了扫描所有类型的广告字符串,您将必须将扫描模式设置为gap_observer_mode,如文档所示,这种扫描将返回当时正在广告和扫描过程的BLE设备的任何类型的广告字符串永远不会超时,您只能通过使用GAPM_CANCEL_CMD来停止它。GAP_GEN_MODE将返回仅在有限或一般模式下广告的设备。正如我所提到的,请确保该设备确实是广告。没有特殊指南来操作扫描过程,只有每种配置在扫描命令中执行的规范,请查看主机侧的DSP示例并检查user_scan_start()函数,您可以使用作为参考。

现在,如果扫描设备需要时间,则可以尝试不过滤重复的广告消息(如果您打印太多数据,尽管这可能最终可以重置设备),还可以尝试降低您的值扫描间隔和扫描窗口,您当前拥有的值是每312.5ms扫描每个频道62.5ms,也许是您使用的设备不经常宣传。同样,您在其他电话扫描仪上看到广告设备(我认为Android)的事实也许是因为这些设备被缓存,并且Android不会向您显示该扫描实例中发现的设备。

谢谢mt_dialog

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

嗨,mt_dialog
感谢你的回复。

我再次尝试了测试。
似乎无法搜索,因为发送和接收设备的敏感性不好。

是否有RSSI值,意思是“ 100” IS'-100dBm'?

mt_dialog
离线
最后一次露面:2个月2周前
职员
加入:2015-06-08 11:34
嗨,Craftwizard,

嗨,Craftwizard,

价值为-100dBm的RSSI在BLE中没有含义(这是一个星期的接待),但我不确定是否会得到您的问题。您得到的100是什么?您是否检查了常见问题解答如何正确翻译DBM中的值https://support.dialog-spoomendonductor.com/guide/faq-da1458x-software-peri ...检查“如何读取和将RSSI值转换为DBM”。

谢谢mt_dialog