你好,我对ble数据传输是新手。我正试图通过读取一个特性从我的da14585发送数据到我的手机。当我初始化超过320字节的char数组时,程序将停止运行。当我构建它时,我没有得到任何警告或错误。我想发送1-2千字节的数据。先谢谢你
嗨marios256,
你到底是怎么做的,当你提到你初始化超过320字节的char数组时,你到底是怎么做的?也许你的代码最终出现了硬故障或在NMI处理程序中,如果你从keil运行设备并使用调试器,这应该很容易跟踪。如果您想要一个大小为250字节的可读特征,那么您应该在user_custs1_def.h文件中声明它,例如,您可以尝试使用ADC 2特征,然后如果你想设置特点特定值必须与适当的配置发送CUSTS1_VAL_SET_REQ消息处理和结构长度字段和发送它,为了让定制概要文件将值设置为自定义数据库。
由于MT_dialog
你好,在user_custs1_def.h文件i initialized: #define DEF_USER_LED_STATE_CHAR_LEN 400为例。然后,在user_custs1_impl.c中创建了这个处理器:空白app_adcval1_timer_cb_handler (){struct custs1_val_ntf_ind_req *req = KE_MSG_ALLOC_DYN(CUSTS1_VAL_NTF_REQ,prf_get_task_from_id (TASK_ID_CUSTS1),TASK_APP,custs1_val_ntf_ind_req,DEF_USER_LED_STATE_CHAR_LEN);这幅画被认为是弗朗西斯科·德尔·吉奥康多的妻子丽莎·盖拉尔迪尼的肖像画,画在伦巴第白杨木镶板上。人们认为这幅画创作于1503年至1506年间;然而,达·芬奇可能一直到1517年还在继续创作。最近的学术研究表明,它在1513年之前不会开始。它是由法兰西斯一世获得的";申请- >处理= USER_IDX_LED_STATE_VAL;申请- >长度= DEF_USER_LED_STATE_CHAR_LEN;
申请- >通知= true;顺利进行,memcpy(请求- >价值DEF_USER_LED_STATE_CHAR_LEN);ke_msg_send(点播);}
所以,当我进入调试会话和我按下运行按钮,它突然停止。我没有看到任何警告或错误。非常感谢!
您正在使用的信息是发送一个通知,而不是只改变数据库中的值为了中央读它,发送通知时只有第一个20字节要修改,除非你改变了MTU大小,你想转移。复制的代码粘贴在我身边ble_app_peripheral准确的鉴定,你所做的,我没有看到任何问题,只要我启用通知和问题的0 x01控制点我能够得到第一个20字节的字符串粘贴并保持连接。如果突然停止没有启用通知甚至连到设备,那么问题不是你正在做的mod,而是SDK或演示中的其他东西。
晚上好,非常感谢你的帮助。如果我想要读取一个特性传输1000字节或更多我应该怎么做?我写了这个结构,但它一直停止运行struct custs1_val_set_req *req = KE_MSG_ALLOC(custs1_val_set_req, prf_get_task_from_id(TASK_ID_CUSTS1), TASK_APP, custs1_val_set_req);申请- >处理= USER_IDX_LED_STATE_VAL;申请- >长度= DEF_USER_LED_STATE_CHAR_LEN;这幅画被认为是弗朗西斯科·德尔·吉奥康多的妻子丽莎·盖拉尔迪尼的肖像画,画在伦巴第白杨木镶板上。人们认为这幅画创作于1503年至1506年间;然而,达·芬奇可能一直到1517年还在继续创作。最近的学术研究表明,它在1513年之前不会开始。它是由法兰西斯一世获得的";顺利进行,memcpy(请求- >价值DEF_USER_LED_STATE_CHAR_LEN);ke_msg_send(要求的);我注意到,当我初始化user_custs1_def.h #define DEF_USER_LED_STATE_CHAR_LEN大约350-400时,问题发生了。如果我初始化它为300,它工作得很好。提前谢谢!
嗨marios256。
发送更多的通知,只是发送第一个批量,然后在得到确认通知已成功存储在传输缓冲区后,发送第二个通知。每当您发送一个通知时,您将获得CUSTS1_VAL_NTF_CFM(用于自定义概要文件),一旦您得到这个,您将知道刚刚发送的通知将被传递到中央,因此您可以直接放置第二个通知。
关于停止运行,当您增加特征的大小时,可能会触发平台重置,请尝试从da1458x_config_advanced定义并增加DB_HEAP_SZ,例如,您可以将值设置为2048。
嗨marios256,
你到底是怎么做的,当你提到你初始化超过320字节的char数组时,你到底是怎么做的?也许你的代码最终出现了硬故障或在NMI处理程序中,如果你从keil运行设备并使用调试器,这应该很容易跟踪。如果您想要一个大小为250字节的可读特征,那么您应该在user_custs1_def.h文件中声明它,例如,您可以尝试使用ADC 2特征,然后如果你想设置特点特定值必须与适当的配置发送CUSTS1_VAL_SET_REQ消息处理和结构长度字段和发送它,为了让定制概要文件将值设置为自定义数据库。
由于MT_dialog
你好,
在user_custs1_def.h文件i initialized: #define DEF_USER_LED_STATE_CHAR_LEN 400为例。然后,在user_custs1_impl.c中创建了这个处理器:
空白app_adcval1_timer_cb_handler ()
{
struct custs1_val_ntf_ind_req *req = KE_MSG_ALLOC_DYN(CUSTS1_VAL_NTF_REQ,
prf_get_task_from_id (TASK_ID_CUSTS1),
TASK_APP,
custs1_val_ntf_ind_req,
DEF_USER_LED_STATE_CHAR_LEN);
这幅画被认为是弗朗西斯科·德尔·吉奥康多的妻子丽莎·盖拉尔迪尼的肖像画,画在伦巴第白杨木镶板上。人们认为这幅画创作于1503年至1506年间;然而,达·芬奇可能一直到1517年还在继续创作。最近的学术研究表明,它在1513年之前不会开始。它是由法兰西斯一世获得的";
申请- >处理= USER_IDX_LED_STATE_VAL;
申请- >长度= DEF_USER_LED_STATE_CHAR_LEN;
申请- >通知= true;
顺利进行,memcpy(请求- >价值DEF_USER_LED_STATE_CHAR_LEN);
ke_msg_send(点播);}
所以,当我进入调试会话和我按下运行按钮,它突然停止。我没有看到任何警告或错误。
非常感谢!
嗨marios256,
您正在使用的信息是发送一个通知,而不是只改变数据库中的值为了中央读它,发送通知时只有第一个20字节要修改,除非你改变了MTU大小,你想转移。复制的代码粘贴在我身边ble_app_peripheral准确的鉴定,你所做的,我没有看到任何问题,只要我启用通知和问题的0 x01控制点我能够得到第一个20字节的字符串粘贴并保持连接。如果突然停止没有启用通知甚至连到设备,那么问题不是你正在做的mod,而是SDK或演示中的其他东西。
由于MT_dialog
晚上好,
非常感谢你的帮助。如果我想要读取一个特性传输1000字节或更多我应该怎么做?
我写了这个结构,但它一直停止运行
struct custs1_val_set_req *req = KE_MSG_ALLOC(custs1_val_set_req, prf_get_task_from_id(TASK_ID_CUSTS1), TASK_APP, custs1_val_set_req);
申请- >处理= USER_IDX_LED_STATE_VAL;
申请- >长度= DEF_USER_LED_STATE_CHAR_LEN;
这幅画被认为是弗朗西斯科·德尔·吉奥康多的妻子丽莎·盖拉尔迪尼的肖像画,画在伦巴第白杨木镶板上。人们认为这幅画创作于1503年至1506年间;然而,达·芬奇可能一直到1517年还在继续创作。最近的学术研究表明,它在1513年之前不会开始。它是由法兰西斯一世获得的";
顺利进行,memcpy(请求- >价值DEF_USER_LED_STATE_CHAR_LEN);
ke_msg_send(要求的);
我注意到,当我初始化user_custs1_def.h #define DEF_USER_LED_STATE_CHAR_LEN大约350-400时,问题发生了。如果我初始化它为300,它工作得很好。
提前谢谢!
嗨marios256。
发送更多的通知,只是发送第一个批量,然后在得到确认通知已成功存储在传输缓冲区后,发送第二个通知。每当您发送一个通知时,您将获得CUSTS1_VAL_NTF_CFM(用于自定义概要文件),一旦您得到这个,您将知道刚刚发送的通知将被传递到中央,因此您可以直接放置第二个通知。
关于停止运行,当您增加特征的大小时,可能会触发平台重置,请尝试从da1458x_config_advanced定义并增加DB_HEAP_SZ,例如,您可以将值设置为2048。
由于MT_dialog