我正在尝试修改示例128设计,以便一次可以处理超过1个字节,但我没有太多运气。是否有一个可以一次编写1个字节的版本?谢谢!
嗨,蓝色,您可以从Sample128_task.c行〜103中为值属性分配更多空间开始。用示例128中描述的方法创建新服务比其他服务使用更棘手。您可以将Dis Service Files.c和diss_task.c作为基础检查
感谢您的响应VESA,我已经尝试过为价值属性分配更多空间。当我这样做时,我到达了NMI处理程序中的断点,该断点说看门狗已经到期了。
也许有一个更好的示例,我比sample128有一个更好的榜样?
我的需求很简单,我希望我的移动应用程序向DA14580发送数据请求,该数据将以约30个字节信息响应。
嗨,蓝色,
该错误可能意味着程序被卡在某个地方。关于错误,很难说出其他任何信息。我记得128位UUID服务样品中显示的方法非常棘手,因为有很多魔术数字。我建议您查看DIS服务。如果您在配置文件夹中打开文件diss.c and diss_task.c,您会发现使用此方法非常容易理解配置文件结构:const struct attm_desc diss_att_db [dis_idx_nb] ={//设备信息服务声明[dis_idx_svc] = {att_decl_primary_service,perm(rd,enable),sizeof(diss_dis_svc),sizeof(diss_dis_svc),(uint8_t *)&diss_dis_svc},//制造商名称特征声明[dis_idx_manufacter_name_char] = {att_decl_characteristic,perm(rd,enable),sizeof(diss_manufacturer_name_char),sizeof(diss_manufacturer_name_char),(uint8_t *)&diss_manufacturer_name_char},//制造商名称特征值[dis_idx_manufacturer_name_val] = {att_char_manuf_name,perm(rd,enable),dis_val_max_len,0,null},null},...};
const struct attm_desc diss_att_db [dis_idx_nb] ={//设备信息服务声明[dis_idx_svc] = {att_decl_primary_service,perm(rd,enable),sizeof(diss_dis_svc),sizeof(diss_dis_svc),(uint8_t *)&diss_dis_svc},//制造商名称特征声明[dis_idx_manufacter_name_char] = {att_decl_characteristic,perm(rd,enable),sizeof(diss_manufacturer_name_char),sizeof(diss_manufacturer_name_char),(uint8_t *)&diss_manufacturer_name_char},//制造商名称特征值[dis_idx_manufacturer_name_val] = {att_char_manuf_name,perm(rd,enable),dis_val_max_len,0,null},null},...};
在diss_task.c中,您有一个函数diss_create_db_req_handler,这将创建数据库的服务。查看函数调用attm_svc_create_db()在创建数据库请求处理程序中。无需手工进行魔术计算。
diss_create_db_req_handler
attm_svc_create_db()
不幸的是,您只能使用此方法使用简短的UUID定义。
我发现,对于当前的SDK,创建新的个人资料令人不安。希望将来有一些SDK的役权。
如果要创建一个全新的配置文件,请记住要修改DA14580_CONFIG.H,prf_utils.c,rwble_hl_config.h,app_api.h,app_task_handlers.h和rwip_config.h。希望我不会错过任何文件
PS。如果您只需要使用30个字节的数据回复,您可以考虑在广告数据包中不断发送它吗?然后,手机不需要请求数据。还是您还需要在发送数据之前将一些特定数据发送到设备?
再次感谢VESA如此出色的答复。我将仔细研究您所说的话,并继续努力。
我确实需要首先将一些特定数据发送到设备,然后将正确的响应发送回,所有有效响应均小于30个字节。因此,这似乎是一项简单的任务,但是我显然对SDK遇到了一些麻烦。
我很幸运使用自定义配置文件发送我的30个字节,但是现在想知道我是否可以通过UART添加文本菜单,类似于“外围示例”的工作方式。
更详细地说,我想做的就是通过UART打印菜单,选择一个选项(1,2,3,4 ...等),并使DA14580保存20个字节值,然后可以通过我的移动设备读取该值应用程序。
关于最简单的实施方法的想法吗?我尝试将其添加到“ Arch_main()”中的“外围示例”中,但这似乎根本不太好,因为它在将菜单打印到UART时会不断崩溃。
谢谢!
请在您的项目中包含App_Console(DK_APPS/SRC/模块/app/src/app_utils)。App_Console提供Arch_printf功能以打印格式的文本。语法类似于printfC标准LIB提供的功能。不幸的是,App_Console似乎没有提供当前收集输入的方法。请参阅peripheral_examples源文件夹中的uart.h。在那里你可以找到uart_reveive_byte功能。确保在DA14580_CONFIG.H中启用Printf函数:#define cfg_printf。否则这些功能将不存在
Arch_printf
printf
uart_reveive_byte
#define cfg_printf
谢谢
再次感谢Vesa。正是我需要的。
谢谢你!我们非常感谢您帮助DA14580用户。如果您很快要去度假,请给自己一个很棒的圣诞节
br je_dialog
嗨,蓝色,
您可以从Sample128_task.c行〜103中为值属性分配更多空间开始。用示例128中描述的方法创建新服务比其他服务使用更棘手。您可以将Dis Service Files.c和diss_task.c作为基础检查
感谢您的响应VESA,我已经尝试过为价值属性分配更多空间。当我这样做时,我到达了NMI处理程序中的断点,该断点说看门狗已经到期了。
也许有一个更好的示例,我比sample128有一个更好的榜样?
我的需求很简单,我希望我的移动应用程序向DA14580发送数据请求,该数据将以约30个字节信息响应。
嗨,蓝色,
该错误可能意味着程序被卡在某个地方。关于错误,很难说出其他任何信息。我记得128位UUID服务样品中显示的方法非常棘手,因为有很多魔术数字。我建议您查看DIS服务。如果您在配置文件夹中打开文件diss.c and diss_task.c,您会发现使用此方法非常容易理解配置文件结构:
const struct attm_desc diss_att_db [dis_idx_nb] =
{
//设备信息服务声明
[dis_idx_svc] = {att_decl_primary_service,perm(rd,enable),sizeof(diss_dis_svc),
sizeof(diss_dis_svc),(uint8_t *)&diss_dis_svc},
//制造商名称特征声明
[dis_idx_manufacter_name_char] = {att_decl_characteristic,perm(rd,enable),sizeof(diss_manufacturer_name_char),
sizeof(diss_manufacturer_name_char),(uint8_t *)&diss_manufacturer_name_char},
//制造商名称特征值
[dis_idx_manufacturer_name_val] = {att_char_manuf_name,perm(rd,enable),dis_val_max_len,0,null},null},
...
};
在diss_task.c中,您有一个函数
diss_create_db_req_handler
,这将创建数据库的服务。查看函数调用attm_svc_create_db()
在创建数据库请求处理程序中。无需手工进行魔术计算。不幸的是,您只能使用此方法使用简短的UUID定义。
我发现,对于当前的SDK,创建新的个人资料令人不安。希望将来有一些SDK的役权。
如果要创建一个全新的配置文件,请记住要修改DA14580_CONFIG.H,prf_utils.c,rwble_hl_config.h,app_api.h,app_task_handlers.h和rwip_config.h。希望我不会错过任何文件
PS。如果您只需要使用30个字节的数据回复,您可以考虑在广告数据包中不断发送它吗?然后,手机不需要请求数据。还是您还需要在发送数据之前将一些特定数据发送到设备?
再次感谢VESA如此出色的答复。我将仔细研究您所说的话,并继续努力。
我确实需要首先将一些特定数据发送到设备,然后将正确的响应发送回,所有有效响应均小于30个字节。因此,这似乎是一项简单的任务,但是我显然对SDK遇到了一些麻烦。
我很幸运使用自定义配置文件发送我的30个字节,但是现在想知道我是否可以通过UART添加文本菜单,类似于“外围示例”的工作方式。
更详细地说,我想做的就是通过UART打印菜单,选择一个选项(1,2,3,4 ...等),并使DA14580保存20个字节值,然后可以通过我的移动设备读取该值应用程序。
关于最简单的实施方法的想法吗?我尝试将其添加到“ Arch_main()”中的“外围示例”中,但这似乎根本不太好,因为它在将菜单打印到UART时会不断崩溃。
谢谢!
嗨,蓝色,
请在您的项目中包含App_Console(DK_APPS/SRC/模块/app/src/app_utils)。App_Console提供
Arch_printf
功能以打印格式的文本。语法类似于printf
C标准LIB提供的功能。不幸的是,App_Console似乎没有提供当前收集输入的方法。请参阅peripheral_examples源文件夹中的uart.h。在那里你可以找到uart_reveive_byte
功能。确保在DA14580_CONFIG.H中启用Printf函数:#define cfg_printf
。否则这些功能将不存在谢谢
再次感谢Vesa。正是我需要的。
谢谢你!我们非常感谢您帮助DA14580用户。如果您很快要去度假,请给自己一个很棒的圣诞节
br je_dialog