ESP8266 在 rtt 中的使用(一)

1 篇文章 0 订阅

在这里插入图片描述
1.介绍esp8266基本情况,上图为原理图,采用串口AT指令通信,模块有3种运行方式,AP、STA、AP+STA。具体指令请参考at指令集
2.我们接着讲RTT的AT组件,在RTT系统中,分为客户端,服务端,这里我们主要用到客户端,就是来解析URC的。其中有时要用到调试交互功能,输入at client就行了。如图
在这里插入图片描述
3.这里讲具体使用,如果在env工具中没有初始化串口,则需要用函数 。
int at_client_init(const char *dev_name, rt_size_t recv_bufsz);
接着创建响应结构体
at_response_t at_create_resp(rt_size_t buf_size, rt_size_t line_num, rt_int32_t timeout);
发送信息函数
rt_err_t at_exec_cmd(at_response_t resp, const char *cmd_expr, …);
删除响应结构体函数
at_delete_resp(resp);
解析数据的函数
const char *at_resp_get_line(at_response_t resp, rt_size_t resp_line);//返回某行的数据
const char *at_resp_get_line_by_kw(at_response_t resp, const char *keyword);//返回关键字某行的数据
int at_resp_parse_line_args(at_response_t resp, rt_size_t resp_line, const char *resp_expr, …);//返回某行自定义的数据
int at_resp_parse_line_args_by_kw(at_response_t resp, const char *keyword, const char resp_expr, …);//返回关键字所在行自定义数据
响应的结构体信息
struct at_response
{
/
response buffer */
char buf;
/
the maximum response buffer size /
rt_size_t buf_size;
/
the number of setting response lines
* == 0: the response data will auto return when received ‘OK’ or ‘ERROR’
* != 0: the response data will return when received setting lines number data /
rt_size_t line_num;
/
the count of received response lines /
rt_size_t line_counts;
/
the maximum response time */
rt_int32_t timeout;
};
typedef struct at_response *at_response_t;
下面给出具体示例

#include <rtthread.h>
#include "at.h"
#include "math.h"
#include "string.h"
int main(void)
{
	  at_response_t resp = RT_NULL;
	  rt_uint8_t *ip,*mac;
      at_client_init("uart3",512);
	  resp = at_create_resp(128, 0, rt_tick_from_millisecond(5000));
	  at_exec_cmd(resp, "ATE0");
	  at_exec_cmd(resp, "AT+CIFSR");
      const char * resp_expr = "%*[^\"]\"%[^\"]\"";
	  char resp_arg[AT_CMD_MAX_LEN] = { 0 };
		//第一个
//		if(at_resp_parse_line_args(resp, 1, resp_expr, resp_arg) == 1)
//		{
//			rt_kprintf("Station IP : %s\r\n", resp_arg);
//			memset(resp_arg, 0x00, AT_CMD_MAX_LEN);
//		}
//		if (at_resp_parse_line_args(resp, 2, resp_expr, resp_arg) == 1)
//		{
//			rt_kprintf("Station MAC : %s\r\n", resp_arg);
//		}
			//第二个
		//  at_resp_parse_line_args_by_kw(resp,"IP",resp_expr,resp_arg);
		 // rt_kprintf("Station IP : %s\r\n", resp_arg);
			//第三个
 //  	rt_kprintf(" %s\r\n",at_resp_get_line(resp,1));	
	//	rt_kprintf(" %s\r\n",at_resp_get_line(resp,2));	
			//第四个
	//	rt_kprintf(" %s\r\n",at_resp_get_line_by_kw(resp,"IP"));
	//	rt_kprintf(" %s\r\n",at_resp_get_line_by_kw(resp,"MAC"));
		
		
	at_delete_resp(resp);
    return 0;
}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值