HTTP.ino 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. #include "M5Stack.h"
  2. #include "TFTTerminal.h"
  3. TFT_eSprite TerminalBuff = TFT_eSprite(&M5.Lcd);
  4. TFTTerminal terminal(&TerminalBuff);
  5. String waitRevice()
  6. {
  7. String recvStr;
  8. do
  9. {
  10. recvStr = Serial2.readStringUntil('\n');
  11. } while (recvStr.length() == 0);
  12. Serial.println(recvStr);
  13. terminal.println(recvStr);
  14. return recvStr;
  15. }
  16. void sendATCMD(String cmdStr)
  17. {
  18. Serial2.print(cmdStr);
  19. delay(100);
  20. }
  21. int sendATCMDAndRevice(String cmdStr)
  22. {
  23. delay(1000);
  24. Serial2.print(cmdStr);
  25. delay(100);
  26. waitRevice();
  27. String recvStr = waitRevice();
  28. delay(100);
  29. if (recvStr.indexOf("OK") != -1)
  30. {
  31. return 0;
  32. }
  33. else
  34. {
  35. return -1;
  36. }
  37. }
  38. void GET() {
  39. terminal.println("GET Request");
  40. sendATCMD("AT?\r\n");
  41. delay(100);
  42. Serial2.flush();
  43. sendATCMDAndRevice("AT+CGATT?\r\n");
  44. sendATCMDAndRevice("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"\r\n");
  45. sendATCMDAndRevice("AT+SAPBR=3,1,\"APN\",\"CMNET\"\r\n");
  46. sendATCMDAndRevice("AT+SAPBR=0,1\r\n");
  47. sendATCMDAndRevice("AT+SAPBR=1,1\r\n");
  48. sendATCMDAndRevice("AT+HTTPINIT\r\n");
  49. sendATCMDAndRevice("AT+HTTPPARA=\"URL\",\"http://api.m5stack.com/v1\"\r\n");
  50. sendATCMDAndRevice("AT+HTTPACTION=0\r\n");
  51. // while(!Serial2.available());
  52. delay(5000);
  53. sendATCMDAndRevice("AT+HTTPREAD\r\n");
  54. delay(1000);
  55. String recvStr;
  56. while(Serial2.available()){
  57. recvStr+= Serial2.readString();
  58. }
  59. Serial.println(recvStr);
  60. terminal.println(recvStr);
  61. sendATCMDAndRevice("AT+HTTPTERM\r\n");
  62. }
  63. void POST() {
  64. terminal.println("POST Request");
  65. sendATCMD("AT?\r\n");
  66. delay(100);
  67. Serial2.flush();
  68. sendATCMDAndRevice("AT+CGATT?\r\n");
  69. sendATCMDAndRevice("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"\r\n");
  70. sendATCMDAndRevice("AT+SAPBR=3,1,\"APN\",\"CMNET\"\r\n");
  71. sendATCMDAndRevice("AT+SAPBR=0,1\r\n");
  72. sendATCMDAndRevice("AT+SAPBR=1,1\r\n");
  73. sendATCMDAndRevice("AT+HTTPINIT\r\n");
  74. sendATCMDAndRevice("AT+HTTPPARA=\"CID\",1\r\n");
  75. sendATCMDAndRevice("AT+HTTPPARA=\"CONTENT\",\"application/x-www-form-urlencoded\"\r\n");
  76. sendATCMDAndRevice("AT+HTTPPARA=\"URL\",\"http://header.json-json.com/\"\r\n");
  77. sendATCMD("AT+HTTPDATA=10,3000\r\n");
  78. sendATCMD("M5STACK,GO\r\n");
  79. sendATCMDAndRevice("AT+HTTPACTION=1\r\n");
  80. delay(5000);
  81. sendATCMDAndRevice("AT+HTTPREAD\r\n");
  82. delay(1000);
  83. String recvStr;
  84. while(Serial2.available()){
  85. recvStr+= Serial2.readString();
  86. }
  87. Serial.println(recvStr);
  88. terminal.println(recvStr);
  89. sendATCMDAndRevice("AT+HTTPTERM\r\n");
  90. }
  91. void setup()
  92. {
  93. M5.begin();
  94. Serial2.begin(115200, SERIAL_8N1, 16, 17);
  95. Serial2.flush();
  96. delay(1000);
  97. M5.Lcd.fillRect(0, 0, 320, 240, TFT_BLACK);
  98. M5.Lcd.fillRect(0, 0, 320, 40, TFT_WHITE);
  99. M5.Lcd.setTextColor(TFT_BLACK);
  100. M5.Lcd.setTextDatum(TC_DATUM);
  101. M5.Lcd.drawString("SIM800L HTTP GET/POST", 160, 10, 4);
  102. M5.Lcd.setTextDatum(TL_DATUM);
  103. M5.Lcd.setTextColor(TFT_WHITE);
  104. TerminalBuff.createSprite(240,200);
  105. terminal.setGeometry(20,55,300,200);
  106. terminal.setFontsize(1);
  107. terminal.println("Press Btn A GET Request");
  108. terminal.println("Press Btn B POST Request");
  109. };
  110. void loop()
  111. {
  112. M5.update();
  113. if(M5.BtnA.wasPressed()) GET();
  114. if(M5.BtnB.wasPressed()) POST();
  115. if(M5.BtnC.wasPressed()) {
  116. String recvStr;
  117. recvStr = Serial2.readStringUntil('\n');
  118. Serial.println(recvStr);
  119. terminal.println(recvStr);
  120. };
  121. delay(10);
  122. }