// #include "esp8266.h" // /////////////////////////////////////////////////////////////////////////////////////////////////////////// // //用户配置区 // //连接端口号:8086,可自行修改为其他端口. // const uint8_t *portnum = "8086"; // // WIFI STA模式,设置要去连接的路由器无线参数,请根据你自己的路由器设置,自行修改. // const uint8_t *wifista_ssid = "FCC"; //路由器SSID号 // const uint8_t *wifista_encryption = "wpawpa2_aes"; // wpa/wpa2 aes加密方式 // const uint8_t *wifista_password = "347470868"; //连接密码 // // WIFI AP模式,模块对外的无线参数,可自行修改. // const uint8_t *wifiap_ssid = "ATK-ESP8266"; //对外SSID号 // const uint8_t *wifiap_encryption = "wpawpa2_aes"; // wpa/wpa2 aes加密方式 // const uint8_t *wifiap_password = "12345678"; //连接密码 // /////////////////////////////////////////////////////////////////////////////////////////////////////////// // // 4个网络模式 // const uint8_t *ATK_ESP8266_CWMODE_TBL[3] = {"STA模式 ", "AP模式 ", "AP&STA模式 "}; // ATK-ESP8266,3种网络模式,默认为路由器(ROUTER)模式 // // 4种工作模式 // const uint8_t *ATK_ESP8266_WORKMODE_TBL[3] = {"TCP服务器", "TCP客户端", " UDP 模式"}; // ATK-ESP8266,4种工作模式 // // 5种加密方式 // const uint8_t *ATK_ESP8266_ECN_TBL[5] = {"OPEN", "WEP", "WPA_PSK", "WPA2_PSK", "WPA_WAP2_PSK"}; // /////////////////////////////////////////////////////////////////////////////////////////////////////////// // //向ATK-ESP8266发送命令 // // cmd:发送的命令字符串 // // ack:期待的应答结果,如果为空,则表示不需要等待应答 // // waittime:等待时间(单位:10ms) // //返回值:0,发送成功(得到了期待的应答结果) // // 1,发送失败 // uint8_t atk_8266_send_cmd(uint8_t *cmd, uint8_t *ack, uint16_t waittime) // { // uint8_t res = 0; // INT8U err = 0; // UartFrame_TypeDef *msg; // uart6_dma_send(cmd, sizeof(cmd)); // if (ack && waittime) //需要等待应答 // { // while (--waittime) //等待倒计时 // { // ms_delay(10); // // iwdg_feed(UART6_DOG); // msg = (UartFrame_TypeDef *)OSMboxPend(uart6_mbox, 50, &err); // if ((err == OS_ERR_NONE) && (msg->len >= 2)) //接收到期待的应答结果 // { // printf(msg); // // if (msg->buf) // // if (atk_8266_check_cmd(ack)) // // { // // printf("ack:%s\r\n", (uint8_t *)ack); // // break; //得到有效数据 // // } // } // } // if (waittime == 0) // res = 1; // } // return res; // } // //向ATK-ESP8266发送指定数据 // // data:发送的数据(不需要添加回车了) // // ack:期待的应答结果,如果为空,则表示不需要等待应答 // // waittime:等待时间(单位:10ms) // //返回值:0,发送成功(得到了期待的应答结果)luojian // uint8_t atk_8266_send_data(uint8_t *data, uint8_t *ack, uint16_t waittime) // { // uint8_t res = 0; // INT8U err = 0; // UartFrame_TypeDef *msg; // uart6_dma_send(data, sizeof(data)); //发送命令 // if (ack && waittime) //需要等待应答 // { // while (--waittime) //等待倒计时 // { // ms_delay(10); // msg = (UartFrame_TypeDef *)OSMboxPend(uart6_mbox, 50, &err); // if ((err == OS_ERR_NONE) && (msg->len >= 2)) //接收到期待的应答结果 // { // printf(msg); // // if (atk_8266_check_cmd(ack)) // // { // // printf("ack:%s\r\n", (uint8_t *)ack); // // break; //得到有效数据 // // } // } // } // if (waittime == 0) // res = 1; // } // return res; // } // // ATK-ESP8266退出透传模式 // //返回值:0,退出成功; // // 1,退出失败 // uint8_t atk_8266_quit_trans(void) // { // while ((USART6->SR & 0X40) == 0) // ; //等待发送空 // USART6->DR = '+'; // ms_delay(15); //大于串口组帧时间(10ms) // while ((USART6->SR & 0X40) == 0) // ; //等待发送空 // USART6->DR = '+'; // ms_delay(15); //大于串口组帧时间(10ms) // while ((USART6->SR & 0X40) == 0) // ; //等待发送空 // USART6->DR = '+'; // ms_delay(500); //等待500ms // return atk_8266_send_cmd("AT", "OK", 20); //退出透传判断. // } // //获取ATK-ESP8266模块的AP+STA连接状态 // //返回值:0,未连接;1,连接成功 // uint8_t atk_8266_apsta_check(void) // { // if (atk_8266_quit_trans()) // return 0; //退出透传 // atk_8266_send_cmd("AT+CIPSTATUS", ":", 50); //发送AT+CIPSTATUS指令,查询连接状态 // if (atk_8266_check_cmd("+CIPSTATUS:0") && // atk_8266_check_cmd("+CIPSTATUS:1") && // atk_8266_check_cmd("+CIPSTATUS:2") && // atk_8266_check_cmd("+CIPSTATUS:4")) // return 0; // else // return 1; // } // // //获取ATK-ESP8266模块的连接状态 // // //返回值:0,未连接;1,连接成功. // // uint8_t atk_8266_consta_check(void) // // { // // uint8_t *p; // // uint8_t res; // // if (atk_8266_quit_trans()) // // return 0; //退出透传 // // atk_8266_send_cmd("AT+CIPSTATUS", ":", 50); //发送AT+CIPSTATUS指令,查询连接状态 // // p = atk_8266_check_cmd("+CIPSTATUS:"); // // res = *p; //得到连接状态 // // return res; // // } // //获取Client ip地址 // // ipbuf:ip地址输出缓存区 // void atk_8266_get_wanip(uint8_t *ipbuf) // { // uint8_t *p, *p1; // if (atk_8266_send_cmd("AT+CIFSR", "OK", 50)) //获取WAN IP地址失败 // { // ipbuf[0] = 0; // return; // } // p = atk_8266_check_cmd("\""); // p1 = (uint8_t *)strstr((const char *)(p + 1), "\""); // *p1 = 0; // sprintf((char *)ipbuf, "%s", p + 1); // } // // ATK-ESP8266模块测试主函数 // void esp_8266_task(void) // { // // uint16_t rlen=0; // uint8_t key; // uint8_t timex; // while (atk_8266_send_cmd("AT", "OK", 20)) //检查WIFI模块是否在线 // { // atk_8266_quit_trans(); //退出透传 // atk_8266_send_cmd("AT+CIPMODE=0", "OK", 200); //关闭透传模式 // } // while (atk_8266_send_cmd("ATE0", "OK", 20)) // ; //关闭回显 // while (1) // { // ms_delay(10); // // atk_8266_at_response(1); //检查ATK-ESP8266模块发送过来的数据,及时上传给电脑 // } // }