创建新的AT命令

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.xmece.com/support.我们将在未来几天修复bug /优化搜索和标记。
12个职位/ 0个新职位
最后发表
ant777222
离线
最后看到:3个月3周前
加入:2019-07-11 17:03
创建新的AT命令

我将如何在无代码中创建一个新的AT命令来更改BLE uart的波特率。

设备:
PM_Dialog
离线
最后看到:6小时43分钟前
工作人员
加入:2018-02-08 11:03
嗨Ant777222,

嗨Ant777222,

开发CodeLess引用应用程序代码是为了快速评估或执行一些基本的BLE功能,而不必深入代码。您需要实现的是可实现的,但是您需要自己完成一些工作并调试一些用户应用程序功能。看看user_codeless.c中的函数void user_execute_commands(char* cmd)。这个函数接受一串以分号分隔的AT命令,并逐个执行它们。USER_APP_CMD_RECEIVED被发送到内核。然后,检查处理USER_APP_CMD_RECEIVED消息的user_catch_rest_hndl()。您的自定义AT命令应该添加到at_command_charactertics_t跳转表中。请遵循USE_AT_ADVSTART宏,这是负责开始广告。此外,您应该注意如何通过perip_init()函数中的波特率。

谢谢,PM_Dialog

ant777222
离线
最后看到:3个月3周前
加入:2019-07-11 17:03
我做了一个命令,AT+BAUD=0。

我做了一个命令,AT+BAUD=0。现在它所做的就是返回ok。我正在努力找出传递波特率到perip_init()的最佳方法,你会建议我怎么做?

PM_Dialog
离线
最后看到:6小时43分钟前
工作人员
加入:2018-02-08 11:03
嗨Ant777222,

嗨Ant777222,

请看看外围的init()函数,你会看到UART2最终以57600波特率完成。当您发送适当的AT命令时,您应该将波特率保存为一个变量,并在uart2_init()中传递它。

谢谢,PM_Dialog

ant777222
离线
最后看到:3个月3周前
加入:2019-07-11 17:03
现在我有一点

现在我在user_at_commands.c中有这段代码来更改波特率为115200。

#ifdef使用_at_baud.
void user_at_baud(struct at_cmd_params_t * arg,char * reply_string)

Uint8_t index = ahtoi(&arg->cmd_buffer[arg->arg_index[0]]);
If (index == 3){
uart2_init (UART_BAUDRATE_115K2 UART_CHARFORMAT_8);
参数- > success_flag = true;

# endif

然而,这冻结了终端。当我将终端的波特率设置更改为115200时,它仍然冻结。

PM_Dialog
离线
最后看到:6小时43分钟前
工作人员
加入:2018-02-08 11:03
嗨Ant777222,

嗨Ant777222,

您能分享一下您是如何使用自定义AT命令修改at_command_charactertics_t跳转表的吗?语法描述如下所示:

  • AT命令ID索引
  • AT命令标记字符串
  • AT命令标记长度
  • 实现该功能的AT命令回调
  • 最小争论数量
  • 最大参数数
  • 最大回复大小字符串

由于您发送AT + BAUK = 0命令,请您在调试模式下运行它,以澄清user_at_baud()触发回调函数吗?

谢谢,PM_Dialog

ant777222
离线
最后看到:3个月3周前
加入:2019-07-11 17:03
我将以下代码添加到

我向跳转表添加了以下代码。

#ifdef使用_at_baud.

{AT_BAUD, "BAUD", 4, user_at_BAUD, 1,1, RPLY_MAX_SIZE},

# endif

如果我把void user_at_random()中的代码放入void user_at_BAUD()中,并使用AT命令AT+BAUD=3,我将得到一个随机数,正如我所期望的那样。

ant777222
离线
最后看到:3个月3周前
加入:2019-07-11 17:03
如果我把这个加上user_at

如果我将此添加到我的user_at_baud()funtion,它不会改变波特率,但在57k6保持终端也会冻结。

Uint8_t index = ahtoi(&arg->cmd_buffer[arg->arg_index[0]]);
If (index == 3){
uart2_init (UART_BAUDRATE_57K6 UART_CHARFORMAT_8);
参数- > success_flag = true;

我还没有连接调试器,我正在等待我的IT部门连接正确的驱动程序。现在与J3的连接只是作为电源。我有P0_4连接到Rx和P0_5到Tx和J4引脚2连接到一个COM端口的地。这可能是问题吗?

ant777222
离线
最后看到:3个月3周前
加入:2019-07-11 17:03
所以我要改变波特率

所以我正在正确地改变波特率,然而,当我改变波特率时,键盘不能在终端中键入。通过浅蓝色的应用程序,我仍然可以发送命令,如键入管道命令后,我改变波特率。例如,如果我输入ATr,终端不响应ok,我希望能够读取终端和连接的电话的响应。此外,我想修复不能与键盘输入后,改变波特率的终端。

PM_Dialog
离线
最后看到:6小时43分钟前
工作人员
加入:2018-02-08 11:03
嗨Ant777222,

嗨Ant777222,

很抱歉耽搁了。既然波特率改变了,我想串口终端的波特率也应该改变。

谢谢,PM_Dialog

ant777222
离线
最后看到:3个月3周前
加入:2019-07-11 17:03
我在改变波特率

我在改变终端的波特率。添加user_charachter_parser_start()解决了这个问题。

void user_at_baud(struct at_cmd_params_t * arg,char * reply_string)

Uint8_t index = ahtoi(&arg->cmd_buffer[arg->arg_index[0]]);
If (index == 5){
UART2_INIT(UART_BAUDRATE_38K4,UART_CHARFORMAT_8);
user_charachter_parser_start ();
参数- > success_flag = true;

PM_Dialog
离线
最后看到:6小时43分钟前
工作人员
加入:2018-02-08 11:03
嗨Ant777222,

嗨Ant777222,

很高兴你解决了你的问题,非常感谢你的指示。

谢谢,PM_Dialog