自定义通知值不发送后BLE订阅

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.xmece.com/support.我们将在未来几天修复bug /优化搜索和标记。
10个帖子/ 0个新
最后发表
costas.braz
离线
最后看到:1年12个月前
加入:2017-10-16 20:57
自定义通知值不发送后BLE订阅

你好,

我正在开发一个通过BLE传输加速度计测量的项目。我在只读特征时,我成功转移了它们,并且我希望它们能够通知,以便您可以为智能手机获取更新。我基于它在BLE_Perihperal实例中的ADC1特征之后。
我首先尝试使用第一个特征(x轴),一旦订阅,它加载一个值,然后不再发送另一个值。
我用浅蓝色Android应用程序来检查特征。

也许我错过了一个需要配置的设置,以便在将cccd写入描述符后发送更新?

我已经附上了部分的源文件,我认为对你们有帮助的检查。
你也可以在这里找到我的完整源代码项目:

https://drive.google.com/open?id=1u4KLQE1cd2xDbppyyhiDjL2lnfaqtZ09

提前致谢

设备:
PM_Dialog
离线
最后看到:19小时20分钟前
工作人员
加入:2018-02-08 11:03
嗨Kosta,

嗨Kosta,

让我检查你的项目,我会回复你。您是否在移动应用程序中启用通知?作为第一步,我建议您尝试将原始值作为ADC示例发送,而不是加速度计的数据。您想发送多少数据?

此外,我强烈建议您查看DA14585 / 6产品和我们最新的SDK6。亚博电竞菠菜对于这些产品,我们具亚博电竞菠菜有实现的软件示例,它通过I2C读取传感器的值并通过通知发送它们。除此例是,我们有各种各样的软件示例,这将非常有用,有助于入门。请检查下面的链接:

谢谢,PM_Dialog

costas.braz
离线
最后看到:1年12个月前
加入:2017-10-16 20:57
你好,

你好,
我已经拥有DA14580 Pro的开发套件,所以我想继续这一点。我看看了DA14585 / 6的榜样,看看他们是否可以帮助我在DA14580上的开发,但它没有。
来自我要传输的传感器的数据是12位值(由来自一个寄存器的8位和从第二个比特组成)。
在浏览UM-B-050手册后,我注意到你必须写到控制点来启用通知以及adc1使用的定时器,我能请您解释一下这是如何发生的,特别是它如何启用通知?

PM_Dialog
离线
最后看到:19小时20分钟前
工作人员
加入:2018-02-08 11:03
嗨哥斯达,

嗨哥斯达,

控制点特性用于SDK的ble_app_peripheral示例。当一个值被写入Control Point特性时,会触发user_custs1_ctrl_wr_ind_handler()。因此,如果值为1,那么app_adcval1_timer_cb_handler将被触发每个APP_PERIPHERAL_CTRL_TIMER_DELAY。app_adcval1_timer_cb_handler模拟ADC采样,如果您检查这个函数的源代码,您将看到“sample”值会定期地增加每个APP_PERIPHERAL_CTRL_TIMER_DELAY。“样本”将通过通知发送到对端设备。但是,通知操作是对等端需要的。我检查了你的代码,我可以看到你没有使用控制点特征。所以,你必须启用你正在使用的移动应用程序的通知。

谢谢,PM_Dialog

costas.braz
离线
最后看到:1年12个月前
加入:2017-10-16 20:57
你好,

你好,
我正在使用LightBlue应用程序,就像在教程中一样。在按下应用上的订阅按钮后,就会发送一个值并写入cccd,所以我假设手机端也会以这种方式启用通知。我是否需要做一些其他的事情来启用它们?
在链接中,您会发现它的图片。
https://drive.google.com/file/d/1RJGA8gjJRAEbly63jSUAcf13y69hWyXG/view?usp=sharing

谢谢你!

PM_Dialog
离线
最后看到:19小时20分钟前
工作人员
加入:2018-02-08 11:03
嗨Kosta,

嗨Kosta,

在user_catch_rest_hndl中,您正在处理custs1_val_write_ind消息,所以如果我能够正确理解,则将某些内容写入特性以触发user_custs1_accel_x_cfg_ind_handler()?请在调试模式下运行您的代码,并将断点添加到user_custs1_accel_x_cfg_ind_handler()中添加一个断点?断点是否击中?

谢谢,PM_Dialog

costas.braz
离线
最后看到:1年12个月前
加入:2017-10-16 20:57
你好,

你好,
断点命中并停止代码,如您在图片中看到。
老实说,我不确定是否需要编写任何内容来触发该处理程序,我的印象是,为了启用通知,应该使用描述符write(cccd)。
在我的应用程序中,我希望它尽快开始通知,只要您的特性从传感器获取数据到断开连接,就开始发送数据并继续发送数据。这是否意味着我不需要cust1_val_write_ind struct?
https://drive.google.com/drive/u/0/folders/1A7NlyWUAD-jKNcAVlQ9iZtdjmmQ9ljI7

PM_Dialog
离线
最后看到:19小时20分钟前
工作人员
加入:2018-02-08 11:03
嗨Kosta,

嗨Kosta,

道歉,但我无法在调试模式下运行代码,因为我没有加速度计,我得到nmi。执行user_custs1_accel_x_cfg_ind_handler时,将根据您的代码触发app_accel_x_ntf_req_handler。因此,在此函数中,您从传感器读取,您通过通知发送第一个数据,您可以在App_peripheral_ctrl_timer_delay之后再次启动计时器。在这一点上,让我问你一件事。在app_easy_timer的回调函数中,为什么有app_accel_x_set_handler而不是app_accel_x_ntf_req_handler?请检查BLE_APP_PERIANIALLAL示例的app_adcval1_timer_cb_handler。请你重新发送你分享我的链接,因为我没有进入那个?

谢谢,PM_Dialog

costas.braz
离线
最后看到:1年12个月前
加入:2017-10-16 20:57
你好,

你好,
您的建议让我认为,也许set处理程序和ntf处理程序混淆了程序,在完全注释掉accel_x_set_handler并只留下ntf处理程序之后,它可以工作!我成功地读取了订阅特征后的值。
谢谢!
但是,我确实遇到了另一个问题。在发送了几个值后的某个时间,我在Arch_System.c文件中获得了WRAP_PLATFORM_RESET错误(我在以下链接中有一个调试的屏幕截图)。这是什么,造成这一点?(任何偶然的送达的价值观?)

https://drive.google.com/file/d/1yWSYWH0vNBYa7Y1ZxgoI51rMmpZV6Zo2/view?usp=sharing

谢谢

PM_Dialog
离线
最后看到:19小时20分钟前
工作人员
加入:2018-02-08 11:03
嗨Kosta,

嗨Kosta,

很高兴你解决了你的问题,谢谢你接受我的答案。wrap_platform_reset是由于内存不足造成的。在您的应用程序中,可能在每次连接之后都会出现某种内存泄漏。当wrap_platform_reset()发生时,请确保错误代码是RESET_MEM_ALLOC_FAIL,为了找到它,您必须调试它。此外,检查是否有任何挂起的消息,你已经发送在加速计的读取期间,并确保你正在消费的消息,你得到的消息,当消息被处理或如果你分配数据,他们应该被释放。举个例子,如果你得到数据从传感器和分配信息以发送数据通知尽快有一个连接设备最终会耗尽内存,如果设备运行耗尽内存,这将导致设备重置。尝试从da1458x_config_advanced中定义并增加DB_HEAP_SZ,例如,您可以设置一个值2048。同样,您可以将APP_PERIPHERAL_CTRL_TIMER_DELAY更改为一个更大的值。

谢谢,PM_Dialog