BLE主机中所有广告BLE设备的列表

⚠️
嗨,那里..感谢您参加论坛。激动人心的消息!现在,我们正在转到我们的新论坛平台,该平台将提供更好的功能,并包含在主话网站中。所有帖子和帐户都已迁移。我们现在仅在新论坛上接受流量 - 请在https://www.dialog-spoomendonductor.com/support。我们将在未来几天修复错误 /优化搜索和标记。
8帖子 / 0新
最后一篇文章
Ratheesht
离线
最后一次露面:3年2周前
加入:2017-01-02 11:08
BLE主机中所有广告BLE设备的列表

你好
1)。如何列出我们DSP(v_5.150.2)主机程序中广告的所有BLE设备。
2)。在主机中列出了所有设备后,我需要通过选择该设备来连接到特定设备。请建议在BLE主机程序中进行更改的位置。

我正在使用DA14580 Pro套件。

请参考有关此或示例项目或文档的一些链接

设备:
mt_dialog
离线
最后一次露面:1年3个月前
职员
加入:2015-06-08 11:34
嗨,拉瑟什特(Ratheesht),

嗨,拉瑟什特(Ratheesht),

1)每当您获得广告消息的指示时,只要您在da1458x_config_basic.h.h da1458x_config_basic.h da da1458x_config_basic.h中定义了cfg_printf定义,dsps应用程序就可以在user_on_adv_report_ind()中实现Arch_prinf()函数。文件(也为了能够打印,您还需要进行额外的修改,该修改在本文中指示https://support.dialog-spoomendonductor.com/forums/post/dialog-smartbond-bl ...

2)如果您想具有这种功能功能,则应该在扫描过程中为每个发现的设备分配一个索引,并为每个发现的设备分配一个数组(扫描过程作为中心持续约10秒)。关于何时发生打印,取决于您想实现的方式(在扫描期间或扫描完成时)。没有完全托管的示例具有这种功能功能,但是接近监视器的Windows应用程序(在Windows上)确实可以做到这一点,也许这会给您一些想法。

谢谢mt_dialog

Ratheesht
离线
最后一次露面:3年2周前
加入:2017-01-02 11:08
你好

你好
当我列出设备地址时,我将两次获得单个设备地址。为什么它如此这样以及如何解决。

mt_dialog
离线
最后一次露面:1年3个月前
职员
加入:2015-06-08 11:34
嗨,拉瑟什特(Ratheesht),

嗨,拉瑟什特(Ratheesht),

扫描命令消息具有由User_scan_conf的.filter_duplic成员配置的选项,该成员将其作为值scan_filt_duplic_en或scan_filt_duplic_dis为value scan_filt_duplic_en。因此,如果为当前扫描配置SCAN_FILT_DUPLIC_EN(持续约8秒 - 它会自动持续)将不会有重复的设备(除非广告设备超过10个)。因此,如果您启用了此选项,并且在每次扫描中获得相同的地址,则您需要由应用程序实施的附加过滤器,以便将广告设备过滤出来,这些设备将独立于扫描过程。

谢谢mt_dialog

Ratheesht
离线
最后一次露面:3年2周前
加入:2017-01-02 11:08
嗨mt_dialog,

嗨mt_dialog,

1.好的,它仅在scan_filt_duplic_en模式下,但我无法理解您上一篇文章的最后一句话
即“”“您将需要应用程序实施的附加过滤器,以便将广告设备过滤出来,这些设备将独立于扫描过程。”。
您能用更多细节描述它吗?

我有两个对话框和另外三个BLE。

2.而且它仅列出一个设备地址,但我们的期望是,它应该发现所有设备地址。

我正在使用以下设置运行BLE
主机设置:(扫描)
gap_gen_discovery
scan_allow_adv_all
gapm_connection_selective
设备设置:(广告)
gap_gen_discoverable
gap_peripheral_slv
adv_allow_scan_any_con_any

您可以提供建议吗?

mt_dialog
离线
最后一次露面:1年3个月前
职员
加入:2015-06-08 11:34
嗨,拉瑟什特(Ratheesht),

嗨,拉瑟什特(Ratheesht),

1.扫描过程具有超时(约8秒),因此对于一个扫描操作,设备扫描约8秒,在那8秒钟内,您不应该看到重复的设备(只要您拥有scan_filt_duplic_en)。如果您想扫描更长的时间,则意味着您应该在每个超时范围内重新启动扫描操作,因此,在每次扫描中,您都将获得先前扫描中报告的设备。如果您想避免这种情况,则应在应用程序级别上应用过滤器,以防止已经报告的打印设备。这意味着您必须在上面创建一个阵列,您将在该数组中存储您在先前扫描中挑选的设备,并针对阵列的条目检查每个广告指示(每个DB地址),以避免打印所找到的设备在以前的扫描中。

2.我没有看到您拥有的设置有什么问题,是广告设备的范围吗?如果要检查中央扫描时周围是否正在广告(减少广告间隔,以便广告客户都会更频繁地发送广告字符串,并减少您的扫描窗口和间隔,以便更频繁地扫描广告频道),空气上的噪音也可以阻止中央从外围获得广告指示。另外,由于您只需从一个设备检查中获得一个广告字符串,以防user_on_adv_report_ind()中有任何if()条件,该条件检查广告消息中的特定字符串(如果您已复制了user_on_adv_report_ind()DSPS,则使用dsps。验证外围设备是否在广告字符串中具有特定序列的条件)。

谢谢mt_dialog

Ratheesht
离线
最后一次露面:3年2周前
加入:2017-01-02 11:08
嗨对话框

嗨对话框
谢谢
我能够列出广告设备。扫描在初始化后立即开始,但是我需要使用命令扫描扫描设备,甚至使用命令连接到通过选择来连接其他设备。我正在使用UART2。我提到示例uart2_async.i将更改作为
mode-arch_sleep_off
连接 - 端口1引脚2和端口1 PIN3。
Arch_printf有效,但我无法收到任何命令并给出响应。
我的代码更改

void user_on_set_dev_config_complete(void)
{
//在数据库中添加第一个必需的服务
if(app_db_init_start())
{

uart2_read_in_progress = 1;
UART2_READ((UINT8_T *)buffer,read_char_count,uart2_read_completion_cb);

while(uart2_read_in_progress);

缓冲区[READ_CHAR_COUNT] = 0;

// Arch_printf(“ Working”);
Arch_printf(buffer);
//
// uart2_print_string(buffer);
// user_scan_start();
}
}
该代码仅检查接收。.但它未接收任何数据。实际上,必须比较接收到的数据,如果命令进行扫描,则主机应开始扫描并且连接相同。

请帮助我解决这个问题。

mt_dialog
离线
最后一次露面:1年3个月前
职员
加入:2015-06-08 11:34
嗨,拉瑟什特(Ratheesht),

嗨,拉瑟什特(Ratheesht),

您确定设备未接收数据吗?当您在READ_CHAR_COUNT中声明的数据量时,应发生UART2_READ_COMPLETION_CB()函数,因此,当您在终端中键入该特定数据量的数据时,请检查是否调用回调。另外,由于我测试了您的代码,因此您需要将UART_READ_IN_PROGRESS变量设置为挥发性,以便工作。

谢谢mt_dialog