esp8266.c 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. // #include "esp8266.h"
  2. // ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  3. // //用户配置区
  4. // //连接端口号:8086,可自行修改为其他端口.
  5. // const uint8_t *portnum = "8086";
  6. // // WIFI STA模式,设置要去连接的路由器无线参数,请根据你自己的路由器设置,自行修改.
  7. // const uint8_t *wifista_ssid = "FCC"; //路由器SSID号
  8. // const uint8_t *wifista_encryption = "wpawpa2_aes"; // wpa/wpa2 aes加密方式
  9. // const uint8_t *wifista_password = "347470868"; //连接密码
  10. // // WIFI AP模式,模块对外的无线参数,可自行修改.
  11. // const uint8_t *wifiap_ssid = "ATK-ESP8266"; //对外SSID号
  12. // const uint8_t *wifiap_encryption = "wpawpa2_aes"; // wpa/wpa2 aes加密方式
  13. // const uint8_t *wifiap_password = "12345678"; //连接密码
  14. // ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  15. // // 4个网络模式
  16. // const uint8_t *ATK_ESP8266_CWMODE_TBL[3] = {"STA模式 ", "AP模式 ", "AP&STA模式 "}; // ATK-ESP8266,3种网络模式,默认为路由器(ROUTER)模式
  17. // // 4种工作模式
  18. // const uint8_t *ATK_ESP8266_WORKMODE_TBL[3] = {"TCP服务器", "TCP客户端", " UDP 模式"}; // ATK-ESP8266,4种工作模式
  19. // // 5种加密方式
  20. // const uint8_t *ATK_ESP8266_ECN_TBL[5] = {"OPEN", "WEP", "WPA_PSK", "WPA2_PSK", "WPA_WAP2_PSK"};
  21. // ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  22. // //向ATK-ESP8266发送命令
  23. // // cmd:发送的命令字符串
  24. // // ack:期待的应答结果,如果为空,则表示不需要等待应答
  25. // // waittime:等待时间(单位:10ms)
  26. // //返回值:0,发送成功(得到了期待的应答结果)
  27. // // 1,发送失败
  28. // uint8_t atk_8266_send_cmd(uint8_t *cmd, uint8_t *ack, uint16_t waittime)
  29. // {
  30. // uint8_t res = 0;
  31. // INT8U err = 0;
  32. // UartFrame_TypeDef *msg;
  33. // uart6_dma_send(cmd, sizeof(cmd));
  34. // if (ack && waittime) //需要等待应答
  35. // {
  36. // while (--waittime) //等待倒计时
  37. // {
  38. // ms_delay(10);
  39. // // iwdg_feed(UART6_DOG);
  40. // msg = (UartFrame_TypeDef *)OSMboxPend(uart6_mbox, 50, &err);
  41. // if ((err == OS_ERR_NONE) && (msg->len >= 2)) //接收到期待的应答结果
  42. // {
  43. // printf(msg);
  44. // // if (msg->buf)
  45. // // if (atk_8266_check_cmd(ack))
  46. // // {
  47. // // printf("ack:%s\r\n", (uint8_t *)ack);
  48. // // break; //得到有效数据
  49. // // }
  50. // }
  51. // }
  52. // if (waittime == 0)
  53. // res = 1;
  54. // }
  55. // return res;
  56. // }
  57. // //向ATK-ESP8266发送指定数据
  58. // // data:发送的数据(不需要添加回车了)
  59. // // ack:期待的应答结果,如果为空,则表示不需要等待应答
  60. // // waittime:等待时间(单位:10ms)
  61. // //返回值:0,发送成功(得到了期待的应答结果)luojian
  62. // uint8_t atk_8266_send_data(uint8_t *data, uint8_t *ack, uint16_t waittime)
  63. // {
  64. // uint8_t res = 0;
  65. // INT8U err = 0;
  66. // UartFrame_TypeDef *msg;
  67. // uart6_dma_send(data, sizeof(data)); //发送命令
  68. // if (ack && waittime) //需要等待应答
  69. // {
  70. // while (--waittime) //等待倒计时
  71. // {
  72. // ms_delay(10);
  73. // msg = (UartFrame_TypeDef *)OSMboxPend(uart6_mbox, 50, &err);
  74. // if ((err == OS_ERR_NONE) && (msg->len >= 2)) //接收到期待的应答结果
  75. // {
  76. // printf(msg);
  77. // // if (atk_8266_check_cmd(ack))
  78. // // {
  79. // // printf("ack:%s\r\n", (uint8_t *)ack);
  80. // // break; //得到有效数据
  81. // // }
  82. // }
  83. // }
  84. // if (waittime == 0)
  85. // res = 1;
  86. // }
  87. // return res;
  88. // }
  89. // // ATK-ESP8266退出透传模式
  90. // //返回值:0,退出成功;
  91. // // 1,退出失败
  92. // uint8_t atk_8266_quit_trans(void)
  93. // {
  94. // while ((USART6->SR & 0X40) == 0)
  95. // ; //等待发送空
  96. // USART6->DR = '+';
  97. // ms_delay(15); //大于串口组帧时间(10ms)
  98. // while ((USART6->SR & 0X40) == 0)
  99. // ; //等待发送空
  100. // USART6->DR = '+';
  101. // ms_delay(15); //大于串口组帧时间(10ms)
  102. // while ((USART6->SR & 0X40) == 0)
  103. // ; //等待发送空
  104. // USART6->DR = '+';
  105. // ms_delay(500); //等待500ms
  106. // return atk_8266_send_cmd("AT", "OK", 20); //退出透传判断.
  107. // }
  108. // //获取ATK-ESP8266模块的AP+STA连接状态
  109. // //返回值:0,未连接;1,连接成功
  110. // uint8_t atk_8266_apsta_check(void)
  111. // {
  112. // if (atk_8266_quit_trans())
  113. // return 0; //退出透传
  114. // atk_8266_send_cmd("AT+CIPSTATUS", ":", 50); //发送AT+CIPSTATUS指令,查询连接状态
  115. // if (atk_8266_check_cmd("+CIPSTATUS:0") &&
  116. // atk_8266_check_cmd("+CIPSTATUS:1") &&
  117. // atk_8266_check_cmd("+CIPSTATUS:2") &&
  118. // atk_8266_check_cmd("+CIPSTATUS:4"))
  119. // return 0;
  120. // else
  121. // return 1;
  122. // }
  123. // // //获取ATK-ESP8266模块的连接状态
  124. // // //返回值:0,未连接;1,连接成功.
  125. // // uint8_t atk_8266_consta_check(void)
  126. // // {
  127. // // uint8_t *p;
  128. // // uint8_t res;
  129. // // if (atk_8266_quit_trans())
  130. // // return 0; //退出透传
  131. // // atk_8266_send_cmd("AT+CIPSTATUS", ":", 50); //发送AT+CIPSTATUS指令,查询连接状态
  132. // // p = atk_8266_check_cmd("+CIPSTATUS:");
  133. // // res = *p; //得到连接状态
  134. // // return res;
  135. // // }
  136. // //获取Client ip地址
  137. // // ipbuf:ip地址输出缓存区
  138. // void atk_8266_get_wanip(uint8_t *ipbuf)
  139. // {
  140. // uint8_t *p, *p1;
  141. // if (atk_8266_send_cmd("AT+CIFSR", "OK", 50)) //获取WAN IP地址失败
  142. // {
  143. // ipbuf[0] = 0;
  144. // return;
  145. // }
  146. // p = atk_8266_check_cmd("\"");
  147. // p1 = (uint8_t *)strstr((const char *)(p + 1), "\"");
  148. // *p1 = 0;
  149. // sprintf((char *)ipbuf, "%s", p + 1);
  150. // }
  151. // // ATK-ESP8266模块测试主函数
  152. // void esp_8266_task(void)
  153. // {
  154. // // uint16_t rlen=0;
  155. // uint8_t key;
  156. // uint8_t timex;
  157. // while (atk_8266_send_cmd("AT", "OK", 20)) //检查WIFI模块是否在线
  158. // {
  159. // atk_8266_quit_trans(); //退出透传
  160. // atk_8266_send_cmd("AT+CIPMODE=0", "OK", 200); //关闭透传模式
  161. // }
  162. // while (atk_8266_send_cmd("ATE0", "OK", 20))
  163. // ; //关闭回显
  164. // while (1)
  165. // {
  166. // ms_delay(10);
  167. // // atk_8266_at_response(1); //检查ATK-ESP8266模块发送过来的数据,及时上传给电脑
  168. // }
  169. // }