我试图创建一个应用程序,作为一个串口连接的服务器。为此,我创建了一个自定义配置文件,具有两个特征:
Tx:从服务器向客户端发送1字节的数据。
Rx:从客户端向服务器端发送1字节的数据。
我遵循了教程4(创建自定义配置文件),但它只解释了如何创建可写入的特征。
显然,Tx需要读取,但我似乎找不到任何例子,如何从网站上或在示例项目中读取特性。
我也不能使用sample128,因为它是为SDK 3设计的,我使用的是SDK 5。
你能给我指出一些正确的方向吗?
谢谢。
设备:
嗨jamartin,
通常对于传输,使用可通知特性,例如在服务器端的DSPS应用程序,它使用通知将数据发送到中央,你也可以看看app_ble_peripheral项目,它也使用可通知特性将数据发送到中央。
由于MT_dialog
我回顾了ble_app_peripheral示例,它定义了许多读+通知特性。然而,不幸的是,每个特征的处理程序函数都是空的。所以我可以看到需要写什么函数,但我不确定如何开始向客户端发送数据。(在ios上暂时使用浅蓝色)。正如代码目前所示,试图从一个特征中读取将返回“无值”。我需要在处理函数中做什么来将数据发送到客户端?我必须与内核交互吗?我是否能够一次发送1个字节,或者内核等待更多的数据可用,并将数据以多个字节的数据包发送给客户端?
一个详细的解释或例子将非常感激,因为我是新的这一点。
嗨jamartin,
ble_app_peripheral具有以下功能,用户应该从中央写入控制点特征,一旦在外围写入处理程序user_custs1_ctrl_wr_ind_handler()(向应用程序指示已写入指定的特征)将被触发。该函数将触发一个计时器,当时间流逝时,计时器的处理程序将被调用app_adcval1_timer_cb_handler()。计时器处理程序将分配一个通知消息CUSTS1_VAL_NTF_REQ,该消息包括要发送到中心的数据并将其发送到cust1配置文件。custs1_task.c中的custs1_val_ntf_req_handler()将处理该消息,并将通知命令发送到堆栈,从而发送到中央。中央为了接收这类通知,需要启用它们。我希望上面的解释足以让你开始。
由于MT_dialog
谢谢,这对我很有帮助。我将看看是否可以修改ble_app_peripheral项目以满足我的需求。
你好,
我也有一个类似的问题,这个帖子回答了部分问题,所以谢谢你。我还想了解更多关于通知操作的信息。
我知道Central(客户端)设备必须启用通知,以允许服务器推送数据。是否有一个检查我(服务器)需要执行,以知道通知是否已被客户端启用?
谢谢,
贾斯汀
嗨justinturley,
是的,您可以使用attmdb_att_get_value()函数的notify属性读取特征,并检查返回的值是否等于PRF_CLI_START_NTF。如果这意味着中心已经启用了特征,并且当中心写入你的可通知特征时,你会得到应用程序的指示,请查看下一篇文章http://support.dialog-semiconductor.com/bug-report-multi-periodic-appeas..。.
由于MT_dialog