3.2.1 AT Client 初始化
创建AT客户端对象,初始化客户端对象参数。
1int at_client_init(const char *dev_name, rt_size_t recv_bufsz);
at_client_init() 函数完成对 AT Client 设备初始化、AT Client 移植函数的初始化、AT Client 使用的信号量、互斥锁等资源初始化,并创建 at_client 线程用于 AT Client 中数据的接收的解析以及对 URC 数据的处理。
3.2.2 AT Client 数据收发方式
创建响应结构体:
1at_response_t at_create_resp(rt_size_t buf_size, rt_size_t line_num, rt_int32_t timeout);
删除响应结构体:
1void at_delete_resp(at_response_t resp);
设置响应结构体参数:
1at_response_t at_resp_set_info(at_response_t resp, rt_size_t buf_size, rt_size_t line_num, rt_int32_t timeout);
发送命令并接收响应:
1 rt_err_t at_exec_cmd(at_response_t resp, const char *cmd_expr, 。..);
3.2.3 AT Client 数据解析方式
获取指定行号的响应数据:
该函数用于在 AT Server 响应数据中获取指定行号的一行数据。
1const char *at_resp_get_line(at_response_t resp, rt_size_t resp_line);
获取指定关键字的响应数据:
该函数用于在 AT Server 响应数据中通过关键字获取对应的一行数据。
1const char *at_resp_get_line_by_kw(at_response_t resp, const char *keyword);
解析指定行号的响应数据:
该函数用于在 AT Server 响应数据中获取指定行号的一行数据, 并解析该行数据中的参数。
1int at_resp_parse_line_args(at_response_t resp, rt_size_t resp_line, const char *resp_expr, 。..);
发送命令并解析接收响应例程:
1/*
2 * 程序清单:AT Client 发送命令并解析接收响应例程
3 */
4
5int user_at_client_send(int argc, char**argv)
6{
7 at_response_t resp = RT_NULL;
8 char ip[20];
9 char mac[20];
10 char uartdata[20];
11 if (argc != 2)
12 {
13 LOG_E(“at_cli_send [command] - AT client send commands to AT server.”);
14 return -RT_ERROR;
15 }
16
17 /* 创建响应结构体,设置最大支持响应数据长度为 512 字节,响应数据行数无限制,超时时间为 5 秒 */
18 resp = at_create_resp(512, 0, rt_tick_from_millisecond(5000));
19 if (!resp)
20 {
21 LOG_E(“No memory for response structure!”);
22 return -RT_ENOMEM;
23 }
24
25 /* 发送 AT 命令并接收 AT Server 响应数据,数据及信息存放在 resp 结构体中 */
26 if (at_exec_cmd(resp, argv[1]) != RT_EOK)