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;
msg-> filter_duplic = scan_filt_duplic_en;
msg->间隔= 10;
msg->窗口= 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.
离线
最后一次露面:4个月1日前
职员
加入:2015-06-08 11:34
嗨工艺品,

嗨工艺品,

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

关于您只能跟踪电视的事实,您填写的选项发送扫描命令时可以通过检查RW-BLE-GAP检查这些配置是否有哪些配置-is.pdf(您可以在配置文件和API文档部分 - 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;
msg-> filter_duplic = scan_filt_duplic_en;// scan_filt_duplic_dis;// scan_filt_duplic_en;
msg->间隔= 500;
msg->窗口= 100;
KE_MSG_SEND(MSG);
返回;
}

请帮我。

mt_dialog.
离线
最后一次露面:4个月1日前
职员
加入: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.
离线
最后一次露面:4个月1日前
职员
加入:2015-06-08 11:34
嗨工艺品,

嗨工艺品,

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

谢谢mt_dialog.