你好对话框,
我们将IMU传感器与DA14585集成在I2C上,取得了成功。之后,我们为IMU传感器(ACC、陀螺仪、温度)创建了新特性,并通过使用控制点特性(0x01)发送触发器,读取nRF connect app上的所有传感器特性值。为了开发这个应用程序,我们使用了ble_uu外围示例。
现在我们想使用blecentdevice读取相同的数据,我们希望在不发送任何触发器的情况下执行此操作。例如,当BLE中央连接到BLE服务器时,它应该自动发送传感器数据,而不需要任何外部触发器。如果这样,那么,是否可以使用可用堆栈告诉我们在ble外围示例中应该执行哪些修改?
谢谢你
毗湿奴
关键词:
设备:
嗨,毗湿奴,
因此,您想基于585设备创建一个中心应用程序,并且一旦设备连接到中心,它就应该开始从外围设备或外围设备读取数据,并用更新的值通知中心设备?如果是这样,那么您请求的项目不仅仅是一个简单的布尔应用程序外围设备的mod。为了实现您必须将空项目配置堆栈配置为中心,发出扫描命令,并在收到适当的广告字符串后,可以发出连接请求。在测试连接后,您必须发现外围端可用的所有特性。这意味着您必须创建一个中心配置文件,该配置文件将执行一个发现过程,该过程将支持外围设备上的自定义配置文件,并且一旦发现过程完成(并且中心知道该特定外围设备上支持的所有特性)就开始发出读取命令(如果您是希望中央读取外围设备的数据,或者您应该写入外围设备的CCC描述符(如果特性是可通知的),这样外围设备将开始向中心发送数据。为了实现自定义的中心配置文件,没有文档或教程或简单示例,但是您可以将DSPS演示作为参考(主机端),以实现类似的功能,一个将执行发现并开始与中心通信的设备。
谢谢你的对话
你好对话框,
无论您在上面解释过的哪个(客户端和服务器)都基于DA14585。
但是,就我而言
BLE服务器(外围设备)is(DA14585+IMU传感器)
BLE客户机(中央)是(CC2650)而不是基于DA14585。
在上面的情况下,我不想在BLE客户机中实现触发。每当BLE客户端连接到BLE服务器而不触发时,我都希望读取数据。为此,我想自动地更改BLE外围代码,而不是在BLE客户机代码中。
是否可以从BLE服务器(外围设备)读取数据,而不将0x01写入控制点(触发)?
谢谢你
毗湿奴
嗨,毗湿奴,
读取过程是一个命令,只有中央可以启动而不是外围设备,而不是外围设备,外围设备向中心发起数据传输的唯一方式是通过通知,这意味着您必须使您的特性成为可报告的。此外,为了使中心从外围设备获取通知,它必须对应报告特性执行写入请求,以便启用通知。因此,它不必写入ble_UApp_U外围设备所具有的控制点(控制点只启用一个计时器,触发发送通知),但它的强制要求是在您希望发送其值的特性上启用CCC。例如,当使用ble_uapp_u外围设备时,需要执行两次写入以开始从外围设备获取数据,一个是控制点,另一个写入是启用ADC特性的CCC,客户端必须先获取通知,然后在相应回调中连接时启动通知。
谢谢你的对话
你好对话框,
但是,当我将nRFconnect应用程序用作BleColl时,我只写到控制点(0x01),然后按notification enabled箭头,然后按read箭头接收外围数据。我没有编写任何外部命令,以使CCC从应用程序读取ADC值。
如何启用特性CCC,是由代码执行的,还是应该使用BLE Central来实现?
最后,是否可以在不编写来自BLE central的命令的情况下接收外围数据?
谢谢你
毗湿奴
嗨,毗湿奴,
当您按下notification enable(通知启用)按钮时,中央会这样做,它会写入特性的CCC,以启用指定特性的通知。
如果您不写入CCC特性(即启用通知),则中央将无法接收来自该特定特性的任何内容。
谢谢你的对话
你好对话框,
如果我不想写控制点,我怎么能自动触发计时器?
嗨,毗湿奴,
您可以设置计时器,以便在连接设备后发出小延迟,并在该计时器的回调中发送通知,或者在中央写入CCC(以启用通知)时使用写入指示,或者从那里启动计时器或直接发送通知。对于以后,您所要做的就是在接收CUST1\u VAL_UWrite_Uind时,在用户catch_urest_uHNDL()函数中实现此实现。
谢谢你的对话