你好。
我正在使用带有SDK 6.0.6的DA14585 Pro套件,我目前正在尝试存储虚拟值(让我们假装值为1)到一个变量,并在我的应用程序上使用服务读取它。我正在尝试根据BLE_APP_PERITELAL项目进行它,但到目前为止没有运气 - 如我所知,通过激活控制点(user_svc1_ctrl_wr_ind_handler),调用计时器函数(app_adcval1_timer_cb_handler),它将在计时器时通知中心到期...问题是,这仅适用于通知过程,因为当我按“读取”选项时,没有给出一个值答案。另一个问题是,这不是我想要的,因为我不想更新值,但只显示一个单个。
所以,我的问题是:如何使用read命令用来在中央设备中显示预加载值?(在我的情况下,LightBlue iOS应用程序)。
谢谢
关键词:
设备:
嗨tmiranda,
您将必须将特定特性的值设置为您想要的任何值,自定义配置文件使用消息来执行此操作,例如,如果您想设置特定特征的值,则可以发送Custs1_val_set_req,处理该消息的处理程序函数将触发Custs1_val_set_req_handler(),这将使用attmdb_att_set_value(),它是设置特征值的实际函数。所以,一旦你设置了特征的价值,你就可以从中心阅读。
谢谢mt_dialog.
我不认为我已经理解了。关于BLE_APP_PERITIVELALALAL示例,我正在尝试读取ADC值2读取属性的伪值。
在@ user_peripher.c文件上,我是,user_catch_rest_hndl上没有custs1_val_set_req,所以我以这种方式创建一个新的
案例custs1_val_set_req:
{
struct musts1_val_set_req const * msg_param =(structs custs1_val_set_req const *)(param);
交换机(msg_param->句柄)
{
case svc1_idx_adc_val_2_val:
user_svcl_adc_2_val_set_req_handler(msgs,msg_param,dest_id,src_id);
休息;
}
}
在@ user_custs1_impl.c文件上我正在做的:
void user_svcl_adc_2_val_set_req_handler(ke_msg_id_t const msgid,
struct musts1_val_set_req const * param,
ke_task_id_t const dest_id,
ke_task_id_t const src_id)
{
//静态UINT8_T VAL = 2;
// memcpy(param->值,&val,param->长度);
gpio_setactive(gpio_led_port,gpio_led_pin);
}
正如你所看到的,我只是试图切换一个LED端口,因为我以前的尝试给我一个错误。不幸的是,只要我尝试从ADC值读取2个特征就没有任何事情发生。我在哪里错了?
嗨tmiranda,
当您从中央侧发送读命令时,580将以数据库中已全部的值回复,因此您必须在中央实际读取值之前设置要读取的值,您将不得不发出Musts1_Val_set_req,它是朝向SDK的请求,以便设置值,而不是有人想要读取该值的指示。因此,在您的FW中,您将不得不发出该命令1_Val_set_req,然后在中央读取该特性时,它将返回所存储的值。如上所述,Musts1_Val_Set_Req是从申请到配置文件发出的请求,您所撰写的内容将永远不会被触发。此外,为了表示指示有人试图阅读您的特征,您将必须实现ATTS_READ_REQ_IND,实现此操作请查看以下帖子:
https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bl ...
https://support.dialog-semicondiondiondum/gattcreadcmdind-da14580
谢谢mt_dialog.