【嵌入式开发】利用ESP8266获取附近WIFI信息

2019-07-13 06:17发布

一、准备

  1. 一块块装好AT固件的8266芯片
  2. 一台装了linux的嵌入式开发板
  3. 将芯片与开发板进行连接

二、AT+CWLAP——扫描当前可用的 AP

通过发送AT+CWLAP,可捕获周围的AP信息,下面是查看官方AT文档后得到的信息:
这里写图片描述
这里写图片描述
这里写图片描述 在超级终端中尝试,其中新刷入的固件要启动WIFI模式,启动指令:AT+CWMODE_DEF=3
这里写图片描述

三、在主程序中实现UART通信

由于我用的是改造过的固件,波特率和官方的不一样,所以在使用的时候请改一下波特率,在代码的宏定义部分。 int main(int argc, char *argv[]) { int fd, res; struct termios oldtio, newtio; char ch; char buf[256] = {0}; printf("Start... "); //-----------打开uart设备文件------------------ fd = open(UART_DEVICE, O_RDWR|O_NOCTTY);//没有设置O_NONBLOCK,所以这里read和write是阻塞操作 if (fd < 0) { perror(UART_DEVICE); exit(1); } else printf("Open %s successfully ", UART_DEVICE); //-----------设置操作参数----------------------- tcgetattr(fd, &oldtio);//获取当前操作模式参数 memset(&newtio, 0, sizeof(newtio)); //波特率 数据位=8 使能数据接收 newtio.c_cflag = BAUDRATE|CS8|CLOCAL|CREAD; newtio.c_iflag = IGNPAR; //newtio.c_oflag = OPOST | OLCUC; // /* 设定为正规模式 */ //newtio.c_lflag = ICANON; tcflush(fd, TCIFLUSH);//清空输入缓冲区和输出缓冲区 tcsetattr(fd, TCSANOW, &newtio);//设置新的操作参数 //------------向urat发送数据------------------- char writeBuf[32] = "AT+CWLAP "; res = write(fd, writeBuf, 32); printf("Writing: %s ", writeBuf); //-------------从uart接收数据------------------- string allReturnBuf = ""; string s_buf; printf("Reading... "); while(1) { res = read(fd, buf, 64);//程序将在这里挂起,直到从uart接收到数据(阻塞操作) if (res == 0) continue; buf[res] = '