你好,我正在使用无附件现有服务,与智能手机进行通信。因此,我将ATRL +“要传达的消息”发送给BLE芯片,并将此消息写入此特性,我从智能手机读取它。这个“要传达的消息”的升高限制约为120个字节左右。我想问一下我是否可以通过增加分配此特征的数据库空间来增加这一点。你能告诉我代码在哪里我必须做出更改以实现这一目标。我可以延伸多少钱?
非常感谢!
嗨克里斯南纳格,
请配置def_cust1_inbound_len.和def_cust1_outbound_len.user_custs1_def.h报头文件的定义,以便增加为此特征分配的数据库空间,其中包含您喜欢的值。根据BLE核心规范,请注意属性值的最大长度应高达512个八位字节。
谢谢,PM_DIALOG.
我将这两个定义都改为500,但仍然是我发送atrl +“字符串”,其中字符串有超过160个字符,然后发生一些溢出,只有很少的字符传输。你能帮助我弄清楚为什么正在发生吗?我确实遇到了cmd_buffer_size,而user_cmd_parser.h中的其他大小,但更改这些大小也没有帮助。我正在编程芯片的SRAM。
请你改变for(Uint8_t i = 0; i <160; i ++)至for(Uint8_t i = 0; i <500; i ++)在user_cmd_parser.c文件的extract_args()函数中?您是否能够立即发送超过160byte?此外,您应该定义def_cust1_inbound_len,def_cust1_outbound_len和cmd_buffer_size到500bytes。
是的,我改变了所有这些。但是,当我发送超过160时,它会传输160个字符,并回复错误,然后再做。我无法理解为什么。
您能否澄清应用程序回复的错误?
它只是发送错误。当我发送atrl +“字符串”时,字符串近160个字符。
我们正在努力,以便复制您的问题,并确保您能够发送超过160字节。我会尽快通知你。
我假设你正在尝试使用ATR + PRINT = <发送>或者更简单| <发送>在从移动应用程序中编写特征的值。那是对的吗?
我使用UART向DA14580发送ATRL +“字符串”。
你好,
无附庸不具有支持您使用的格式的扩展命令。ATI(或ATRI用作远程命令)是非扩展命令(意味着它不具有'+')。ATI应该用作返回标识物理设备的硬件和软件的一组字符的请求。您是否以无附带的延长命令实施了?
如果要在无附带的已定义命令中使用已定义的命令将数据发送到蓝牙上,则应使用
ATR + PRINT =
或使用“|”的简化版本或“管道”字符:
| <文本发送>
发出命令时,这些命令都要求您处于蓝牙连接状态。
/ mhv.
哇!我不知道。某种方式atrl +“string”工作。我会尝试你的方式并回来。
非常感谢。
它将“工作”,因为无附件将其留给智能手机应用以验证命令。因此,除非您的应用检查语法,否则您不会意识到它是错误的。
无附加用来生成SprIntf生成一些限制响应长度到255个字符的响应。您可以安全地扩展无附件以处理下面提供的说明后的255个字符。您应该确保远端(在您的案例中智能手机应用程序)响应“确定”或“错误”或从微控制器的每个数据传输响应。除非您使用如上所述的“管道”命令,否则无附加无附加无附近终端的回复,然后在其准备好下次传输之前,您可能无法发送任何新数据,直到接收到回复。使用“pipe”命令删除对回复的需求。
以下是如何更改实现以支持255个字符:
在da1458x_config_basic.h中:
添加一个定义
#define cmd_buffer_size 255.
(将定义移动到此文件允许我们全局访问它)
在user_cmd_parser.h中:
Out-评论旧的定义
#define cmd_buffer_size 160.
像这样
//#define cmd_buffer_size 160
在同一文件中,更改:
#define cmd_max_arg_length 160.
至
#define cmd_max_arg_length cmd_buffer_size.
在user_custs1_def.h.中
改变
#define def_cust1_inbound_len 160.
#define def_cust1_inbound_len cmd_buffer_size.
并且,在同一文件中,更改
#define def_cust1_outbound_len 160.
#define def_cust1_outbound_len cmd_buffer_size.
在user_cmd_parser.c文件的extract_args()函数中
for(Uint8_t i = 0; i <160; i ++)
for(Uint32_t i = 0; i
在User_uart2.h文件的UART2_REC_DATA_AVAIL_ISR()函数中
if(readdata == 0x0d || bytesin> 150)
if(readdata == 0x0d || bytesin> cmd_buffer_size)
在user_cmd_Interpreter的亚辅作用_env_t结构中
char current_cmd [160];
char current_cmd [cmd_buffer_size];
您可以将CMD_BUFFER_SIZE更改为512(我没有测试此问题),但无附加无附件的所有回复都将减少为“确定”或“错误”
非常感谢!你真的很有帮助。对不起,当你说的时候,我还有一个问题:“您应该确保远端(在您的情况下智能手机应用程序)响应”确定“或”错误“到从微控制器的每个数据传输响应。除非使用上述”管道“命令,否则无附加无附带在接下来的下一个传输之前,远程终端的回复,并且在收到回复之前,您可能无法发送任何新数据。使用“pipe”命令删除对回复的需要“这里ATR + PRINT =文本正在工作,即使没有智能手机的任何回复。如果我要从我的智能手机回复,我该怎么做?通过写作一个特征?
虽然ATR + PRINT = 在没有响应的情况下似乎工作,但由于它依赖于简化的消息流可能会感到困惑,以便跟踪是否应该返回响应或远程对等方。蓝牙。使用'|'命令可确保这不会导致问题。
智能手机回到设备的回复与写入自定义服务的第一个特征一样简单(UUID = 914F8FB9-E8CD-411D-B7D1-14594DE45425)
顺便说一下:如果您在第三种特征上订阅它们(UUID = E2048B39-D4F9-4A45-9F25-1856C10D5639,则智能手机将在新数据可用于读取操作时接收通知。
嗨克里斯南纳格,
请配置def_cust1_inbound_len.和def_cust1_outbound_len.user_custs1_def.h报头文件的定义,以便增加为此特征分配的数据库空间,其中包含您喜欢的值。根据BLE核心规范,请注意属性值的最大长度应高达512个八位字节。
谢谢,PM_DIALOG.
我将这两个定义都改为500,但仍然是我发送atrl +“字符串”,其中字符串有超过160个字符,然后发生一些溢出,只有很少的字符传输。
你能帮助我弄清楚为什么正在发生吗?
我确实遇到了cmd_buffer_size,而user_cmd_parser.h中的其他大小,但更改这些大小也没有帮助。我正在编程芯片的SRAM。
嗨克里斯南纳格,
请你改变for(Uint8_t i = 0; i <160; i ++)至for(Uint8_t i = 0; i <500; i ++)在user_cmd_parser.c文件的extract_args()函数中?您是否能够立即发送超过160byte?此外,您应该定义def_cust1_inbound_len,def_cust1_outbound_len和cmd_buffer_size到500bytes。
谢谢,PM_DIALOG.
是的,我改变了所有这些。但是,当我发送超过160时,它会传输160个字符,并回复错误,然后再做。
我无法理解为什么。
嗨克里斯南纳格,
您能否澄清应用程序回复的错误?
谢谢,PM_DIALOG.
它只是发送错误。当我发送atrl +“字符串”时,字符串近160个字符。
嗨克里斯南纳格,
我们正在努力,以便复制您的问题,并确保您能够发送超过160字节。我会尽快通知你。
谢谢,PM_DIALOG.
非常感谢!
嗨克里斯南纳格,
我假设你正在尝试使用ATR + PRINT = <发送>或者更简单| <发送>在从移动应用程序中编写特征的值。那是对的吗?
谢谢,PM_DIALOG.
我使用UART向DA14580发送ATRL +“字符串”。
你好,
无附庸不具有支持您使用的格式的扩展命令。ATI(或ATRI用作远程命令)是非扩展命令(意味着它不具有'+')。ATI应该用作返回标识物理设备的硬件和软件的一组字符的请求。您是否以无附带的延长命令实施了?
如果要在无附带的已定义命令中使用已定义的命令将数据发送到蓝牙上,则应使用
ATR + PRINT =
或使用“|”的简化版本或“管道”字符:
| <文本发送>
发出命令时,这些命令都要求您处于蓝牙连接状态。
/ mhv.
哇!
我不知道。某种方式atrl +“string”工作。
我会尝试你的方式并回来。
非常感谢。
它将“工作”,因为无附件将其留给智能手机应用以验证命令。因此,除非您的应用检查语法,否则您不会意识到它是错误的。
/ mhv.
无附加用来生成SprIntf生成一些限制响应长度到255个字符的响应。您可以安全地扩展无附件以处理下面提供的说明后的255个字符。您应该确保远端(在您的案例中智能手机应用程序)响应“确定”或“错误”或从微控制器的每个数据传输响应。除非您使用如上所述的“管道”命令,否则无附加无附加无附近终端的回复,然后在其准备好下次传输之前,您可能无法发送任何新数据,直到接收到回复。使用“pipe”命令删除对回复的需求。
以下是如何更改实现以支持255个字符:
在da1458x_config_basic.h中:
添加一个定义
#define cmd_buffer_size 255.
(将定义移动到此文件允许我们全局访问它)
在user_cmd_parser.h中:
Out-评论旧的定义
#define cmd_buffer_size 160.
像这样
//#define cmd_buffer_size 160
在同一文件中,更改:
#define cmd_max_arg_length 160.
至
#define cmd_max_arg_length cmd_buffer_size.
在user_custs1_def.h.中
改变
#define def_cust1_inbound_len 160.
至
#define def_cust1_inbound_len cmd_buffer_size.
并且,在同一文件中,更改
#define def_cust1_outbound_len 160.
至
#define def_cust1_outbound_len cmd_buffer_size.
在user_cmd_parser.c文件的extract_args()函数中
改变
for(Uint8_t i = 0; i <160; i ++)
至
for(Uint32_t i = 0; i
在User_uart2.h文件的UART2_REC_DATA_AVAIL_ISR()函数中
改变
if(readdata == 0x0d || bytesin> 150)
至
if(readdata == 0x0d || bytesin> cmd_buffer_size)
在user_cmd_Interpreter的亚辅作用_env_t结构中
改变
char current_cmd [160];
至
char current_cmd [cmd_buffer_size];
您可以将CMD_BUFFER_SIZE更改为512(我没有测试此问题),但无附加无附件的所有回复都将减少为“确定”或“错误”
/ mhv.
非常感谢!
你真的很有帮助。
对不起,当你说的时候,我还有一个问题:
“您应该确保远端(在您的情况下智能手机应用程序)响应”确定“或”错误“到从微控制器的每个数据传输响应。除非使用上述”管道“命令,否则无附加无附带在接下来的下一个传输之前,远程终端的回复,并且在收到回复之前,您可能无法发送任何新数据。使用“pipe”命令删除对回复的需要“
这里ATR + PRINT =文本正在工作,即使没有智能手机的任何回复。
如果我要从我的智能手机回复,我该怎么做?通过写作一个特征?
虽然ATR + PRINT =在没有响应的情况下似乎工作,但由于它依赖于简化的消息流可能会感到困惑,以便跟踪是否应该返回响应或远程对等方。蓝牙。使用'|'命令可确保这不会导致问题。
智能手机回到设备的回复与写入自定义服务的第一个特征一样简单(UUID = 914F8FB9-E8CD-411D-B7D1-14594DE45425)
顺便说一下:如果您在第三种特征上订阅它们(UUID = E2048B39-D4F9-4A45-9F25-1856C10D5639,则智能手机将在新数据可用于读取操作时接收通知。
/ mhv.
非常感谢!