rtthread 移植AT组件

一、环境

rtthread 版本:V4.1.3
模组:EC800M

二、配置

1. 配置宏

/* Network */
#define AT_USING_CLI
#define RT_USING_AT
#define AT_USING_CLIENT
#define AT_CMD_MAX_LEN 512

2.新增文件

在这里插入图片描述

3.初始化

#define EC800_UART_DEV_NAME     "uart7"
at_client_init("EC800_UART_DEV_NAME", 256);

三、调用

这里举例部分内容

1.读取IMSI

#define AT_CIMI     "AT+CIMI\r\n"

/**
 * @brief 获取SIM卡的IMSI
 * @param buf 15位数字
 * @return rt_uint8_t
 */
uint64_t ec800_get_imsi(void)
{
    int res = RT_EOK;

    at_response_t resp = at_create_resp(RESP_BUF_SIZE, 0, RESP_TIMEOUT);
    res = at_exec_cmd(resp, AT_CIMI);
    strtol(resp->buf, NULL, 10);
    at_delete_resp(resp);

    return res;
}

2.ps域(数据业务)附着

#define AT_CGATT    "AT+CGATT=1\r\n"
int ec800_set_cgatt(void)
{
    int res = RT_EOK;

    at_response_t resp = at_create_resp(RESP_BUF_SIZE, 0, RESP_TIMEOUT);
    res = at_exec_cmd(resp, AT_CGATT);
    at_delete_resp(resp);

    return res;
}

3.cs域(网络注册)附着

#define AT_CREG     "AT+CREG?\r\n"
int ec800_set_creg(void)
{
    int res = RT_EOK;

    at_response_t resp = at_create_resp(RESP_BUF_SIZE, 0, RESP_TIMEOUT);
    res = at_exec_cmd(resp, AT_CREG);
    at_delete_resp(resp);

    return res;
}

4.信号质量

#define AT_CSQ      "AT+CSQ\r\n"
int ec800_get_csq(uint8_t *rssi, uint8_t *ber)
{
    int res = RT_EOK;
    int r,b;

    at_response_t resp = at_create_resp(RESP_BUF_SIZE, 0, RESP_TIMEOUT);
    res = at_exec_cmd(resp, AT_CSQ);

    sscanf(get_resp_rcv_line(resp), "+CSQ:%d,%d", &r, &b);
    *rssi = r;
    *ber = b;
    at_delete_resp(resp);

    return res;
}

5.命令行

推荐一个巨好用的命令行

at client

可以实现通过命令行直接输入指令到at模组,并返回模组串口数据。按ESC退出。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值