你好,对话框,
我们将IMU传感器与I2C上的DA14585集成在一起,这是成功的。之后,我们为IMU传感器(ACC、GYRO、Temp)创建了新特性,并能够通过使用控制点特性(0x01)发送触发器来读取nRF connect app上的所有传感器特性值。在开发此应用程序时,我们使用了ble_外围示例。
现在我们想要使用BLE中心设备读取相同的数据,我们想要在不发送任何触发器的情况下做到这一点。比如,当BLE中心连接到BLE服务器时,它应该自动发送传感器数据,而不需要任何外部触发器。这是否可能与可用的堆栈,如果是,告诉我们应该在ble_peripheral的例子中执行什么修改?
谢谢你!
毗湿奴
关键词:
设备:
嗨vishnuatdialog,
所以你想创建一个基于585设备的中央应用程序,一旦设备连接到中央,它应该开始从外设读取数据或外设通知中心设备更新的值?如果是这种情况,那么您请求的项目就不仅仅是ble_app_peripheral的一个简单mod。为了实现这一点,您将不得不采取一个空项目配置堆栈为中心,发出扫描命令,并在收到适当的广告字符串后,您可以发出连接请求。在连接建立之后,您将必须发现外围设备上可用的所有特性。这意味着你将不得不创建一个中央剖面,将执行一个探索过程,将支持定制概要文件在外围方面一旦发现程序完成(和中央知道的所有特征支持特定的外围)开始发行(如果你读命令希望中央从外设读取数据)或者应该写入外设的CCC描述符(在特征是可通知的情况下),这样外设就会开始向中央发送数据。对于实现自定义的中央配置文件,没有文档、教程或简单的示例,但您可以将DSPS演示作为参考(主机端),以实现一些非常类似的东西,一个将执行发现并开始与中央通信的设备。
谢谢你的对话
你好,对话框,
上面解释的任何一个都是基于DA14585的(客户端和服务器)。
但是,就我来说
BLE服务器(外设)为(DA14585 + IMU传感器)
BLE客户机(中央)(CC2650)不是基于DA14585的。
在上述情况下,我不想在BLE客户端中实现触发。每当BLE客户端连接到BLE服务器而不触发时,我希望读取数据。为此,我希望在自动的BLE_peripheral代码中进行更改,而不是在BLE客户端代码中。
是否有可能从BLE服务器(外设)读取数据而不写入0x01到控制点(触发)?
谢谢你!
毗湿奴
嗨vishnuatdialog,
读取过程是一个命令,只有中央设备可以启动,而不是外围设备。外围设备启动向中央设备的数据传输的唯一方式是通过通知,这意味着您必须将您的特征通知。此外,为了使中央计算机从外围设备获取通知,它必须执行对应报告特征的写入请求,以便启用通知。因此,写入ble_app_外围设备所具有的控制点不是强制性的(控制点仅启用一个计时器,该计时器将触发通知的发送),而是强制性的,在您希望发送其值的特性上启用CCC。例如,当使用ble_app_外围设备时,您需要执行两次写入以开始从外围设备获取数据,一次是控制点,另一次是启用ADC特性的CCC,后者对于客户端来说是必需的,以便开始获取通知,您可以在相应回调中连接时开始触发这些通知。
谢谢你的对话
你好,对话框,
但是,当我使用nRFconnect应用程序作为BLEcentral时,我只写到了控制点(0x01),然后按下启用通知箭头,然后按下读取箭头来接收外围数据。我没有写任何外部命令,使CCC从应用程序读取ADC值。
特性上的CCC是如何启用的,这是通过代码执行的,还是我们应该使用BLE Central来实现?
最后,是否可以在不从BLE central写入任何命令的情况下接收外围数据?
谢谢你!
毗湿奴
嗨vishnuatdialog,
当你按下通知启用按钮时,这就是中央所做的,它写入特征的CCC以便启用指定特征的通知。
如果你不写入CCC特征(即启用通知),中央将无法从该特定特征接收任何东西。
谢谢你的对话
你好,对话框,
如果我不想写控制点我怎么能自动触发计时器?
嗨vishnuatdialog,
你可以设置一个定时器发出小延迟与设备连接后,并发送一个通知在定时器回调的,或者您可以使用写指示当中央写CCC(为了使通知)和启动一个计时器从那里或者直接发送通知。对于后面的方法,您所要做的就是在接收到CUSTS1_VAL_WRITE_IND时在user_catch_rest_hndl()函数中实现这个实现。
谢谢你的对话