atcmd例程¶
1、AT组件概念¶
1.1 AT命令概念¶
AT命令是由发明拨号调制解调器modem的hayes公司为了控制modem发明的控制协议,后来移动电话厂家为GSM提供了标准的AT命令用于控制手机的GSM模块。
1.2 AT组件功能¶
AT Server:
基础命令:实现多种通用基础命令(ATE、 ATZ 等)
命令兼容:命令支持忽略大小写,提高命令兼容性
命令检测:命令支持自定义参数表达式,并实现对接收的命令参数自检测功能
命令注册:提供简单的用户自定义命令添加方式,类似于 finsh/msh 命令添加方式
调试模式:提供 AT Server CLI 命令行交互模式,主要用于设备调试
AT Client:
功能待补充
2、AT组件api¶
2.1 server api¶
2.1.1 api¶
//AT server初始化,如果使能了自动初始化则不需要
int at_server_init(void);
//注册自定义AT命令
/*
_name_:自定义AT命令名称,如: "AT+TEST"
_args_expr_:AT 命令参数表达式;(无参数为 NULL, <> 中为必选参数, [] 中为可选参数),如 =[,]
_test_:AT测试函数
_query_:AT查询函数
_setup_:AT设置函数
_exec_:AT执行函数
*/
AT_CMD_EXPORT(_name_, _args_expr_, _test_, _query_, _setup_, _exec_);
//发送数据到客户端
/*
format:自定义发送数据的表达式
...:发送数据列表
*/
void at_server_printf(const char *format, ...);
//带换行的发送数据到客户端
void at_server_printfln(const char *format, ...);
//向客户端发送执行结果
/*
result:执行结果,可取
AT_RESULT_OK 命令执行成功
AT_RESULT_FAILE 命令执行失败
AT_RESULT_NULL 命令无返回结果
AT_RESULT_CMD_ERR 输入命令错误
AT_RESULT_CHECK_FAILE 参数表达式匹配错误
AT_RESULT_PARSE_FAILE 参数解析错误
*/
void at_server_print_result(at_result_t result);
//解析设置命令参数
/*
req_args:设置命令输入参数字符串
req_expr:解析表达式
...:用于存放解析出的参数
*/
int at_req_parse_args(const char *req_args, const char *req_expr, ...);
2.1.2 server api示例¶
int g_value1 = 123, g_value2 = 234;
static at_result_t at_test_query(void)
{
at_server_printfln("+TEST=%d,%d", g_value1, g_value2);
return AT_RESULT_OK;
}
static at_result_t at_test_setup(const char *args)
{
int argc;
int value1,value2;
/* args 的 输 入 标 准 格 式 应 为 "=1,2", "=%d,%d" 为 自 定 义 参 数 解 析 表 达 式,
解 析 得 到 结 果存 入 value1 和 value2 变 量 */
argc = sscanf(args, "=%d,%d", &value1, &value2);
if(argc != 2)
{
return AT_RESULT_PARSE_FAILE;
}
/* 数 据 解 析 成 功, 回 显 数 据 到 AT Server 串 口 设 备 */
printf("value1: %d, value2: %d\r\n", value1, value2);
g_value1 = value1;
g_value2 = value2;
return AT_RESULT_OK;
}
/* 添 加 "AT+TEST" 命 令 到 AT 命 令 列 表, 命 令 参 数 格 式 为 两 个 必 选 参 数 和 > */
AT_CMD_EXPORT("AT+TEST", "=<value1>,<value2>", NULL, at_test_query, at_test_setup, NULL);
2.2 client api¶
待补充
3、AT功能演示¶
3.1 功能概述¶
本代码示例主要演示uart外设的printf功能,周期性向串口调试工具发送”Hello Panchip.”。
3.2 环境要求¶
Board: PAN028b1_evb
将 J18(P3_0) 开关拔至RX侧,将P3_0与uart的RX引脚相连
将 J19(P3_1) 开关拔至TX侧,将P3_1与uart的TX引脚相连
将USB线分别连接至电脑与evb板的UART MicroUSB接口
3.3 编译和烧录¶
例程位置:pan2628_dk\01_SDK\example_extension\atcmd
打开目录下keil下的atcmd.uvproj工程,编译整个代码工程。
3.4 演示说明¶
根据环境要求一节的介绍,正确连接 EVB 开发板的跳线,编译、下载:
在电脑上打开串口调试工具,串口参数:115200/8bit/1stop/无校验
按复位键复位MCU,观察串口打印的内容,确认串口有
AT server (V1.3.1) initialize success.
输出通过串口发送命令
AT+TEST?\r\n
,确认EVB板有+TEST=123,234\r\nOK\r\n
输出通过串口发送命令
AT+TEST=1,2\r\n
,确认EVB板有OK\r\n
响应
串口输出信息如下:
pan028 system start.
AT server (V1.3.1) initialize success.
+TEST=123,234
OK
value1: 1, value2: 2
OK
+TEST=1,2
OK
3.5 RAM/Flash资源使用情况¶
Program Size: data=22.1 xdata=809 const=1144 code=10703