一、环境
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退出。