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

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
8个帖子/ 0新
最后一篇
Ratheesht.
离线
最后一次露面:2年3周前
加入:2017-01-02 11:08
列出BLE主机中的所有广告BLE设备

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

我正在使用da14580 pro套件。

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

设备:
mt_dialog.
离线
最后一次露面:4个月6天前
职员
加入:2015-06-08 11:34
嗨Ratheesht,

嗨Ratheesht,

1)每次都会暗示您可以只打印数据时,DSPS应用程序在user_od_adv_report_ind()中实现了ARCH_PRINF()函数,只要您在DA1458x_config_basic.h中定义了CFG_PRINTF定义文件(也可以打印您还需要额外修改它在此帖子中指示https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bl ...

2)如果您想拥有这种功能,那么您应该有一个数组将发现的设备放置并在扫描过程期间将索引分配给每个发现的设备(扫描过程作为中央持续10秒的中央持续时间)。关于打印何时会发生,这取决于您希望如何实现它(扫描期间或扫描完成时)。没有完全托管的例子,具有这种功能,但是邻近监视器Windows应用程序确实如此(在Windows上),也许这将为您提供一些想法。

谢谢mt_dialog.

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

你好
当我列出设备地址时,即可两次获取单个设备地址。为什么它发生了如此,如何解决它。

mt_dialog.
离线
最后一次露面:4个月6天前
职员
加入:2015-06-08 11:34
嗨Ratheesht,

嗨Ratheesht,

扫描命令消息具有由user_scan_conf的.filter_duplic成员配置的选项,该成员用作值Scan_filt_duplic_en或scan_filt_duplic_dis。因此,如果配置当前扫描的Scan_filt_duplic_en(持续约8秒 - 它自动超过8秒),则会有重复的设备(除非广告设备超过10)。因此,如果您启用了此选项,并且您在正常的每次扫描上获取相同的地址,您需要应用程序实现的其他过滤器,以便过滤扫描过程的广告设备,从扫描过程的实例中无关。

谢谢mt_dialog.

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

嗨mt_dialog,

1.好的,它已经处于Scan_filt_duplic_en模式,但我无法理解上一篇文章的最后一句话
即“”您需要应用程序实现的其他过滤器,以便从扫描过程的实例中过滤out的广告设备。“。
你可以用更多细节描述它吗?

我有两个对话的ble和三个另一个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.
离线
最后一次露面:4个月6天前
职员
加入:2015-06-08 11:34
嗨Ratheesht,

嗨Ratheesht,

1.扫描过程的超时(大约8秒),因此对于一个扫描操作,设备扫描大约8秒钟,在这8秒内,您不应看到重复的设备(只要您拥有Scan_filt_duplic_en)。在您希望扫描更长的时间的情况下,这意味着您应该在每次超时重新启动扫描操作,因此在每次扫描中,您将获得从上一个扫描中报告的设备。如果您想避免此操作,则应在应用程序级别应用过滤器,该过滤器将阻止已报告的打印设备。这意味着您必须创建一个阵列,您将在其中存储您在以前的扫描中拾取的设备,并检查每个广告指示(每个DB地址),以避免找到的打印设备在以前的扫描中。

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

谢谢mt_dialog.

Ratheesht.
离线
最后一次露面:2年3周前
加入: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 *)缓冲区,READ_CHAR_COUNT,UART2_READ_COMPLETION_CB);

而(UART2_READ_IN_POGRONGER);

缓冲区[read_char_count] = 0;

// ARCH_PRINTF(“工作”);
ARCH_PRINTF(缓冲区);
//
// uart2_print_string(缓冲区);
// user_scan_start();
}
}
代码仅用于检查接收程度......但它不接收任何数据。实际上,必须比较接收的数据,如果命令是扫描,则主机应开始扫描和连接。

请帮助我解决这个问题。

mt_dialog.
离线
最后一次露面:4个月6天前
职员
加入:2015-06-08 11:34
嗨Ratheesht,

嗨Ratheesht,

您确定设备是否未收到数据?当您在read_char_count中声明的数据量时,应发生UART2_READ_Completion_cb()函数,因此在键入终端中的特定数据量时,请检查调用回调是否会调用回调。此外,因为i VE测试了代码,所以需要将UART_READ_IN_PROGREST变量设置为易失性以便工作。

谢谢mt_dialog.