我想从物联网传感器设备发送数据到运行在DA14580上的dsp主机,如何做到?我需要做哪些改变?Q2:同样,我想从自定义配置文件中发送数据 - Sample128_After第7.3.6节项目到DA14580上运行的DSPS主机,如何进行?谢谢..dialog.
嗨prasanth.velliyangiri,
1.这些是不同的项目,所需的更改绝非小的修改,DSPS主机检查特定的配置文件(DSPS配置文件),因此您应该更改主机的服务发现操作,并将其适应物联网可用的服务和特征。在发现服务之后,可以对可用的特征启用通知,您可以通过UART推送收到通知的数据。
2.同样适用于自定义项目,必须更改主机的发现过程,以查找自定义配置文件的特征。
谢谢mt_dialog.
Q:如何创建客户端角色的自定义配置文件,搜索服务(sample128_After section 7.3.6.zip project (@server role)),连接到服务,发现特征和读写特征?我查过rw - ble - gatt - is,医生。这份文件只提供了协议。所以,如果你提供像自定义配置文件创建这样的循序渐进的教程,那就太棒了。
不幸的是,没有有关服务和特征的发现过程的可用教程,但您可以作为示例,DSP(这是自定义128位服务)主机侧,以便实现您自己的Central连接,搜索。并在客户端设备中发现特定服务。
亲爱的对话框这些是我在DSPS主机中完成的更改 - Sample128_Awter第7.3.6节项目-@server角色步骤1:根据我的自定义配置文件服务和特征更改了sps_client.h中的UUIDSPS_SERVICE_UUID = sample128_svcsps_server_tx_uuid = sample128_1_val.SPS_SERVER_RX_UUID = sample128_2_valSPS_FLOW_CTRL_UUID = sample128_3_val第二步:接下来换衣服const struct prf_char_def_128 spsc_sps_char [spsc_char_max] = {[SPSC_SRV_TX_DATA_CHAR] = {sample128_1_val, ATT_MANDATORY, ATT_CHAR_PROP_RD | ATT_CHAR_PROP_WR},[spsc_srv_rx_data_char] = {sample128_2_val,att_mandatory,att_char_prop_rd |ATT_CHAR_PROP_NTF},[SPSC_FLOW_CTRL_CHAR] = {sample128_3_val, ATT_MANDATORY, ATT_CHAR_PROP_RD | ATT_CHAR_PROP_NTF}};
第3步:在sps_client_enable_req_handler&gattc_cmp_evt_handler中分配uuid ...
uint8_t sps_data_service_uuid [] = sample128_svc;
但代码停止在GLOBAL_INT_START();/ / arch_main我错过了什么??我还需要改变什么?
嗨prasanth,
首先,您需要提到您的代码停止在global_int_start();我不认为你的代码在那里停下来,它只是通过主要功能循环,自设备刚刚扫描并且不做任何其他事情,这是您的代码更常见的点,所以您正在运行循环时正确地运行应该和所有例子都在做。
通过改变需求方UUID的项目的UUID是适当的,但发现函数填充需求方环境结构拥有信息的服务发现另一边的链接,你将不得不修改根据您的需要。为了检查发现是否正常工作,您必须检查应用程序环境中的信息是否正确,是否与外设数据库的实际句柄相对应。
请问客户端配置文件教程什么时候可以用??谢谢你的对话框
据我所知,任何关于一个关于教程的计划,它将一步一步地指导您关于创建主机和发现过程。
亲爱的对话框在DSPS_HOST项目中Q1:您能否指定与读取DSPS_DEVICE(服务器项目)的特征相关的函数
在580中,没有指示中央读取的特征的应用程序,这是由堆栈处理的,没有配置文件应用程序功能,如果这是你的意思。有关DSP的应用程序配置文件函数的更多信息,您可以在6.7部分应用程序任务界面上查看用户手册(UM-B-038)到串行端口服务。
Int sample128_timer_handler(ke_msg_id_t const msgid,Struct gapm_cmp_evt const *参数,ke_task_id_t const dest_id,ke_task_id_t const src_id){
ke_timer_set(app_sample128_timer,task_app,50);sample128_placeholder + +;
struct sample128_upd_char2_req * req = ke_msg_alloc(sample128_upd_char2_req,task_sample128,task_app,sample128_upd_char2_req.);申请- > val = sample128_placeholder;req-> conhdl = app_env.conhdl;ke_msg_send(要求的);}我想在DSP设备项目中实现TIMER处理程序以获取我们正在发送的数据,因此DSP设备项目定期传输......我在-USER_SPS_SERVER_DATA_TX_CFM_HANDLLER中尝试过......但似乎不起作用
sample128使用不同的消息来触发与DSPS项目不同的通知。您提到的函数发送一个SAMPLE128_UPD_CHAR2_REQ消息,在DSPS中没有处理此类消息的处理器,因为DSPS不支持此消息。您提到的处理程序处理SPS_SERVER_DATA_TX_CFM,该处理程序确认数据被放置在TX缓冲区中。如果你想要设备定期发送数据,你可以关注下面的帖子http://support.dialog-semicondiondiondiondum/dsps-panasonic-evalpan1740。
亲爱的对话框,
/***************************************************************/typedef struct wrbl_env_t.{
空白(* wrbl_timer_cb) ();
uint16_t sensor_read_time;// vp.uint16_t sensor_read_time_1;// vp.uint16_t sensor_read_time_2;// vp.
} wrbl_env_struct;
/ **************************************************************** /
void user_ble_pull(bool init,bool成功){如果(init){periodical_data_timer_handler ();}别的{periodical_data_timer_handler ();}}
/********************************************************************/void句号_data_timer_handler(void){静态uint16_t长度;uint8_t * p_data = null;user_send_ble_data (p_data、长度);wrbl_env。Sensor_read_time = app_easy_timer(100, periodical_data_timer_handler);
}
/**********************************************************************/void user_on_disconnect(struct gapc_disconnect_ind const * param){default_app_on_disconnect(param);ARCH_PRINTF(“设备已断开\ r \ n”);if(wrbl_env.sensor_read_time == 1){app_easy_timer_cancel(wrbl_env.sensor_read_time);}
/ ********************************************************************* /
Q1: i have made above changes in DSPS device project -code is stopped here -> if ((GetWord16(SYS_STAT_REG) & DBG_IS_UP) == DBG_IS_UP)__asm(“bkpt#0 \ n”);
什么可能是这个问题??我错过了什么?谢谢你..
我猜你代码在NMI或HardFault处理程序中停止,您的代码粘在某个地方,大多数可能在读取SPI传感器时(如果启用了看门狗,则在读取SPI传感器时或者您正在访问空指针和硬盘处理程序触发器。SDK提供该功能,以弄清楚发生错误的位置,请检查UM-B-051文档以获取更多信息,以便调试此操作。
亲爱的对话框Q1:即使添加了这个功能,我也没有发现传输中有任何延迟。你能帮我解决这个问题吗??void句号_data_timer_handler(void){//静态UINT16_T长度;// uint8_t * p_data = null;user_send_ble_data(“同伴”,6);wrbl_env.sensor_read_time = app_easy_timer(20000,句号_data_timer_handler);
/ *如果(wrbl_env。sensor_read_time ! = NULL){app_easy_timer_cancel(wrbl_env.sensor_read_time);} * /}
Q2:如果我想使用ke_timer_set();直接用于周期性传输,如何在DSPS设备项目中使用??
我不明白这个问题,内核定时器没有触发?可以使用arch_set_pxact_gpio()检查计时器是否过期。我在一个新的dsp项目中测试了上面的代码,并在连接时触发计时器,它工作得很好,我可以在电话应用程序上正确地接收数据。
使用app_easy_timer() api,它使用ke_timer_set(),当处理程序执行时,您可以执行代码并重置计时器。如果你想直接使用ke_timer_set检查你的其他帖子http://support.dialog-semiconductor.com/apptimerset-0。
我没有在连接时触发计时器??实际上我在调用- periodical_data_timer_handler();- function inside - void user_ble_pull (bool init, bool success)…你能建议我把- periodical_data_timer_handler()放在哪里?- DSPS设备项目中的呼叫功能??如果你给我工作示例代码就太好了……
你必须建立一个连接,以便开始发送通知到一个中心,没有一个连接,我不知道这是怎么可能的。所以连接到一个中心并启动一个计时器,当处理程序触发时,你将通过user_send_ble_data发送一个通知,你将重置计时器。preriodical_data_timer_handler()只是一个处理程序,当您使用该回调启动计时器时,该回调将在时间流逝时执行。
嗨prasanth.velliyangiri,
1.这些是不同的项目,所需的更改绝非小的修改,DSPS主机检查特定的配置文件(DSPS配置文件),因此您应该更改主机的服务发现操作,并将其适应物联网可用的服务和特征。在发现服务之后,可以对可用的特征启用通知,您可以通过UART推送收到通知的数据。
2.同样适用于自定义项目,必须更改主机的发现过程,以查找自定义配置文件的特征。
谢谢mt_dialog.
Q:如何创建客户端角色的自定义配置文件,搜索服务(sample128_After section 7.3.6.zip project (@server role)),连接到服务,发现特征和读写特征?
我查过rw - ble - gatt - is,医生。这份文件只提供了协议。所以,如果你提供像自定义配置文件创建这样的循序渐进的教程,那就太棒了。
嗨prasanth.velliyangiri,
不幸的是,没有有关服务和特征的发现过程的可用教程,但您可以作为示例,DSP(这是自定义128位服务)主机侧,以便实现您自己的Central连接,搜索。并在客户端设备中发现特定服务。
谢谢mt_dialog.
亲爱的对话框
这些是我在DSPS主机中完成的更改 - Sample128_Awter第7.3.6节项目-@server角色
步骤1:根据我的自定义配置文件服务和特征更改了sps_client.h中的UUID
SPS_SERVICE_UUID = sample128_svc
sps_server_tx_uuid = sample128_1_val.
SPS_SERVER_RX_UUID = sample128_2_val
SPS_FLOW_CTRL_UUID = sample128_3_val
第二步:接下来换衣服
const struct prf_char_def_128 spsc_sps_char [spsc_char_max] = {
[SPSC_SRV_TX_DATA_CHAR] = {sample128_1_val, ATT_MANDATORY, ATT_CHAR_PROP_RD | ATT_CHAR_PROP_WR},
[spsc_srv_rx_data_char] = {sample128_2_val,att_mandatory,att_char_prop_rd |ATT_CHAR_PROP_NTF},
[SPSC_FLOW_CTRL_CHAR] = {sample128_3_val, ATT_MANDATORY, ATT_CHAR_PROP_RD | ATT_CHAR_PROP_NTF}
};
第3步:在sps_client_enable_req_handler&gattc_cmp_evt_handler中分配uuid ...
uint8_t sps_data_service_uuid [] = sample128_svc;
但代码停止在GLOBAL_INT_START();/ / arch_main
我错过了什么??我还需要改变什么?
嗨prasanth,
首先,您需要提到您的代码停止在global_int_start();我不认为你的代码在那里停下来,它只是通过主要功能循环,自设备刚刚扫描并且不做任何其他事情,这是您的代码更常见的点,所以您正在运行循环时正确地运行应该和所有例子都在做。
通过改变需求方UUID的项目的UUID是适当的,但发现函数填充需求方环境结构拥有信息的服务发现另一边的链接,你将不得不修改根据您的需要。为了检查发现是否正常工作,您必须检查应用程序环境中的信息是否正确,是否与外设数据库的实际句柄相对应。
谢谢mt_dialog.
请问客户端配置文件教程什么时候可以用??
谢谢你的对话框
嗨prasanth,
据我所知,任何关于一个关于教程的计划,它将一步一步地指导您关于创建主机和发现过程。
谢谢mt_dialog.
亲爱的对话框
在DSPS_HOST项目中
Q1:您能否指定与读取DSPS_DEVICE(服务器项目)的特征相关的函数
嗨prasanth,
在580中,没有指示中央读取的特征的应用程序,这是由堆栈处理的,没有配置文件应用程序功能,如果这是你的意思。有关DSP的应用程序配置文件函数的更多信息,您可以在6.7部分应用程序任务界面上查看用户手册(UM-B-038)到串行端口服务。
谢谢mt_dialog.
Int sample128_timer_handler(ke_msg_id_t const msgid,
Struct gapm_cmp_evt const *参数,
ke_task_id_t const dest_id,
ke_task_id_t const src_id)
{
ke_timer_set(app_sample128_timer,task_app,50);
sample128_placeholder + +;
struct sample128_upd_char2_req * req = ke_msg_alloc(
sample128_upd_char2_req,
task_sample128,
task_app,
sample128_upd_char2_req.
);
申请- > val = sample128_placeholder;
req-> conhdl = app_env.conhdl;
ke_msg_send(要求的);
}
我想在DSP设备项目中实现TIMER处理程序以获取我们正在发送的数据,因此DSP设备项目定期传输......我在-USER_SPS_SERVER_DATA_TX_CFM_HANDLLER中尝试过......但似乎不起作用
嗨prasanth,
sample128使用不同的消息来触发与DSPS项目不同的通知。您提到的函数发送一个SAMPLE128_UPD_CHAR2_REQ消息,在DSPS中没有处理此类消息的处理器,因为DSPS不支持此消息。您提到的处理程序处理SPS_SERVER_DATA_TX_CFM,该处理程序确认数据被放置在TX缓冲区中。如果你想要设备定期发送数据,你可以关注下面的帖子http://support.dialog-semicondiondiondiondum/dsps-panasonic-evalpan1740。
谢谢mt_dialog.
亲爱的对话框,
/***************************************************************/
typedef struct wrbl_env_t.
{
空白(* wrbl_timer_cb) ();
uint16_t sensor_read_time;// vp.
uint16_t sensor_read_time_1;// vp.
uint16_t sensor_read_time_2;// vp.
} wrbl_env_struct;
/ **************************************************************** /
void user_ble_pull(bool init,bool成功)
{
如果(init)
{
periodical_data_timer_handler ();
}
别的
{
periodical_data_timer_handler ();
}
}
/********************************************************************/
void句号_data_timer_handler(void)
{
静态uint16_t长度;
uint8_t * p_data = null;
user_send_ble_data (p_data、长度);
wrbl_env。Sensor_read_time = app_easy_timer(100, periodical_data_timer_handler);
}
/**********************************************************************/
void user_on_disconnect(struct gapc_disconnect_ind const * param)
{
default_app_on_disconnect(param);
ARCH_PRINTF(“设备已断开\ r \ n”);
if(wrbl_env.sensor_read_time == 1)
{
app_easy_timer_cancel(wrbl_env.sensor_read_time);
}
}
/ ********************************************************************* /
Q1: i have made above changes in DSPS device project -code is stopped here -> if ((GetWord16(SYS_STAT_REG) & DBG_IS_UP) == DBG_IS_UP)
__asm(“bkpt#0 \ n”);
什么可能是这个问题??我错过了什么?谢谢你..
嗨prasanth,
我猜你代码在NMI或HardFault处理程序中停止,您的代码粘在某个地方,大多数可能在读取SPI传感器时(如果启用了看门狗,则在读取SPI传感器时或者您正在访问空指针和硬盘处理程序触发器。SDK提供该功能,以弄清楚发生错误的位置,请检查UM-B-051文档以获取更多信息,以便调试此操作。
谢谢mt_dialog.
亲爱的对话框
Q1:即使添加了这个功能,我也没有发现传输中有任何延迟。你能帮我解决这个问题吗??
void句号_data_timer_handler(void)
{
//静态UINT16_T长度;
// uint8_t * p_data = null;
user_send_ble_data(“同伴”,6);
wrbl_env.sensor_read_time = app_easy_timer(20000,句号_data_timer_handler);
/ *如果(wrbl_env。sensor_read_time ! = NULL)
{
app_easy_timer_cancel(wrbl_env.sensor_read_time);
} * /
}
Q2:如果我想使用ke_timer_set();直接用于周期性传输,如何在DSPS设备项目中使用??
嗨prasanth,
我不明白这个问题,内核定时器没有触发?可以使用arch_set_pxact_gpio()检查计时器是否过期。我在一个新的dsp项目中测试了上面的代码,并在连接时触发计时器,它工作得很好,我可以在电话应用程序上正确地接收数据。
使用app_easy_timer() api,它使用ke_timer_set(),当处理程序执行时,您可以执行代码并重置计时器。如果你想直接使用ke_timer_set检查你的其他帖子http://support.dialog-semiconductor.com/apptimerset-0。
谢谢mt_dialog.
我没有在连接时触发计时器??实际上我在调用- periodical_data_timer_handler();- function inside - void user_ble_pull (bool init, bool success)…你能建议我把- periodical_data_timer_handler()放在哪里?- DSPS设备项目中的呼叫功能??如果你给我工作示例代码就太好了……
嗨prasanth,
你必须建立一个连接,以便开始发送通知到一个中心,没有一个连接,我不知道这是怎么可能的。所以连接到一个中心并启动一个计时器,当处理程序触发时,你将通过user_send_ble_data发送一个通知,你将重置计时器。preriodical_data_timer_handler()只是一个处理程序,当您使用该回调启动计时器时,该回调将在时间流逝时执行。
谢谢mt_dialog.