嗨如何列出在我们的DSPS (v_5.150.2)主机程序中广告的所有BLE设备。2).在主机中列出所有设备后,我需要通过选择该设备连接到一个特定的设备。请说明BLE主持人节目的哪些地方需要修改。
我正在使用da14580 pro套件。
请参考相关链接或示例项目或文档
嗨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
嗨当我列出设备地址时,即可两次获取单个设备地址。为什么它发生了如此,如何解决它。
扫描命令消息有一个由user_scan_conf中的.filter_duplic成员配置的选项,该成员的值为SCAN_FILT_DUPLIC_EN或SCAN_FILT_DUPLIC_DIS。因此,如果配置SCAN_FILT_DUPLIC_EN为当前扫描(持续约8秒-它自动超时)不会有重复的设备(除非广告设备超过10)。因此,如果你有这个选项,你得到相同的地址在每个扫描,这是正常的,你将需要一个额外的过滤器实现的应用程序,以过滤出广告设备,独立于扫描过程的实例。
嗨mt_dialog,
1.好的,它已经在SCAN_FILT_DUPLIC_EN模式,但我不能理解你之前的帖子的最后一句话即。"你将需要一个额外的过滤器来实现你的应用程序,以过滤出广告设备将独立于扫描过程的实例。"你可以用更多细节描述它吗?
我有两个对话BLE和三个其他BLE。
2.此外,它只列出一个设备地址,但我们的期望是,它应该发现所有设备地址。
我用下面的设置运行ble主机设置:(扫描)GAP_GEN_DISCOVERYscan_allow_adv_all.GAPM_CONNECTION_SELECTIVE.设备设置:(广告)GAP_GEN_DISCOVERABLEgap_peripheral_slv.ADV_ALLOW_SCAN_ANY_CON_ANY
你能提供你的建议吗?
1.扫描过程有一个超时(大约8秒),所以对于一个扫描操作,设备扫描大约8秒,在这8秒中,您应该不会看到重复的设备(只要您有SCAN_FILT_DUPLIC_EN)。如果您想要扫描更长的时间,这意味着您应该在每次超时时重新启动扫描操作,因此在每次扫描中,您将获得上一次扫描报告的设备。如果您想避免这种情况,您应该在应用程序级别应用一个过滤器,该过滤器将阻止已报告的打印设备。这意味着您必须创建一个数组,你将存储设备已经在以前的扫描,并检查每个广告指示(每个数据库地址)的条目数组,以避免打印设备中发现以前的扫描。
2.我没有看到你的设置有什么问题,是范围内的广告设备吗?如果在中央扫描时检查外围设备是否是广告的(减少广告间隔,以便广告客户更频繁地发送广告字符串并减少扫描窗口和间隔,以便中央更频繁地扫描广告频道),在空中的噪音也可以防止中央从外围获取广告指示。此外,由于您只能从一个设备中获取一个广告字符串,以防user_on_adv_report_ind()中有任何if()条件,该条件会检查广告消息中的特定字符串(如果您从它使用的DSP复制user_on_adv_report_ind()验证外围设备在广告字符串中具有特定序列的条件)。
嗨对话框谢谢你!我可以列出广告设备。扫描开始后立即初始化,但我需要扫描的设备与命令扫描或甚至使用命令连接到其他设备选择连接。我使用uart2。我引用了示例uart2_async。我将更改更改为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);
而(uart2_read_in_progress);
缓冲(READ_CHAR_COUNT) = 0;
/ / arch_printf(“工作”);arch_printf(缓冲);//// uart2_print_string(缓冲区);/ / user_scan_start ();}}代码只是检查接收,但它不接收任何数据。实际上,必须比较接收到的数据,如果命令是scan,那么主机应该开始扫描,对于连接也是一样。
请帮助我解决这个问题。
您确定设备是否未收到数据?当您在read_char_count中声明的数据量时,应发生UART2_READ_Completion_cb()函数,因此在键入终端中的特定数据量时,请检查调用回调是否会调用回调。此外,因为i VE测试了代码,所以需要将UART_READ_IN_PROGREST变量设置为易失性以便工作。
嗨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,
扫描命令消息有一个由user_scan_conf中的.filter_duplic成员配置的选项,该成员的值为SCAN_FILT_DUPLIC_EN或SCAN_FILT_DUPLIC_DIS。因此,如果配置SCAN_FILT_DUPLIC_EN为当前扫描(持续约8秒-它自动超时)不会有重复的设备(除非广告设备超过10)。因此,如果你有这个选项,你得到相同的地址在每个扫描,这是正常的,你将需要一个额外的过滤器实现的应用程序,以过滤出广告设备,独立于扫描过程的实例。
由于MT_dialog
嗨mt_dialog,
1.好的,它已经在SCAN_FILT_DUPLIC_EN模式,但我不能理解你之前的帖子的最后一句话
即。"你将需要一个额外的过滤器来实现你的应用程序,以过滤出广告设备将独立于扫描过程的实例。"
你可以用更多细节描述它吗?
我有两个对话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
你能提供你的建议吗?
嗨RatheeshT,
1.扫描过程有一个超时(大约8秒),所以对于一个扫描操作,设备扫描大约8秒,在这8秒中,您应该不会看到重复的设备(只要您有SCAN_FILT_DUPLIC_EN)。如果您想要扫描更长的时间,这意味着您应该在每次超时时重新启动扫描操作,因此在每次扫描中,您将获得上一次扫描报告的设备。如果您想避免这种情况,您应该在应用程序级别应用一个过滤器,该过滤器将阻止已报告的打印设备。这意味着您必须创建一个数组,你将存储设备已经在以前的扫描,并检查每个广告指示(每个数据库地址)的条目数组,以避免打印设备中发现以前的扫描。
2.我没有看到你的设置有什么问题,是范围内的广告设备吗?如果在中央扫描时检查外围设备是否是广告的(减少广告间隔,以便广告客户更频繁地发送广告字符串并减少扫描窗口和间隔,以便中央更频繁地扫描广告频道),在空中的噪音也可以防止中央从外围获取广告指示。此外,由于您只能从一个设备中获取一个广告字符串,以防user_on_adv_report_ind()中有任何if()条件,该条件会检查广告消息中的特定字符串(如果您从它使用的DSP复制user_on_adv_report_ind()验证外围设备在广告字符串中具有特定序列的条件)。
由于MT_dialog
嗨对话框
谢谢你!
我可以列出广告设备。扫描开始后立即初始化,但我需要扫描的设备与命令扫描或甚至使用命令连接到其他设备选择连接。我使用uart2。我引用了示例uart2_async。我将更改更改为
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);
而(uart2_read_in_progress);
缓冲(READ_CHAR_COUNT) = 0;
/ / arch_printf(“工作”);
arch_printf(缓冲);
//
// uart2_print_string(缓冲区);
/ / user_scan_start ();
}
}
代码只是检查接收,但它不接收任何数据。实际上,必须比较接收到的数据,如果命令是scan,那么主机应该开始扫描,对于连接也是一样。
请帮助我解决这个问题。
嗨RatheeshT,
您确定设备是否未收到数据?当您在read_char_count中声明的数据量时,应发生UART2_READ_Completion_cb()函数,因此在键入终端中的特定数据量时,请检查调用回调是否会调用回调。此外,因为i VE测试了代码,所以需要将UART_READ_IN_PROGREST变量设置为易失性以便工作。
由于MT_dialog