Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz

如何增加內存或改寫程式

查看數: 6893 | 評論數: 22 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發佈時間: 2019-2-27 15:27

正文摘要:

本帖最後由 ykyk9898 於 2019-2-27 15:31 編輯 這是將原本記憶卡裡面圖片藉由esp8266上傳到網頁的功能,不過在上傳時由於內存不夠而導致失敗, 不知道有哪位高手知道如何減少不必要的東西或改寫寫法,而讓上傳成 ...

回復

超新手 發表於 2019-3-13 08:49:31
卻沒看到圖片傳上去

因為你沒有送 webfile 的資料上去
if (esp.find(">")) {
      Serial.println(F("SENDING  data"));
這邊沒東西
}
這也就是為什麼我覺得你的程式問題很多
之前都是在解決 NOT SENDING 的問題
現在解決了, 接下來是你根本沒有送資料的程式
缺少的是把資料從 SD 卡讀出, 然後送到 esp 去的程式
超新手 發表於 2019-3-11 20:52:45
前面的程式並沒有修改,為什麼果變成 server not found?程式多執行幾次看看
超新手 發表於 2019-3-11 19:52:54
要把 post 部份也加上 f("  ")
超新手 發表於 2019-3-11 19:50:20
你的程式根本沒改。還是舊版的
超新手 發表於 2019-3-11 16:05:19
可以把結果貼出來嗎?
ykyk9898 發表於 2019-3-11 15:27:25
超新手 發表於 2019-3-8 09:23
應該是 RAM 用量太多, 影響到程式執行
把 test 改成這樣試試看
也就是把 post 的值也移到 ROM

還是無法上傳,不知道是不是post那整段的問題,查了好多資料,可能要改改寫法
超新手 發表於 2019-3-8 09:23:07
本帖最後由 超新手 於 2019-3-8 09:24 編輯

應該是 RAM 用量太多, 影響到程式執行
把 test 改成這樣試試看
也就是把 post 的值也移到 ROM

  1. void test() {
  2.   File webFile;
  3.   char fileName[13] = "555.JPG";
  4.   String cmd = "AT+CIPSTART=\"TCP\",\"" + server + "\",80";
  5.   esp.println(cmd);
  6.   delay(3000);

  7.   if (esp.find("OK"))
  8.   {
  9.     Serial.println(F("server found"));
  10.     webFile = SD.open(fileName, FILE_READ);
  11.     Serial.print(webFile);
  12.     String post = F("POST /skin/upok.php HTTP/1.1\r\n");
  13.     post += F("Host: 120.114.132.69\r\nContent-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW\r\n");
  14.     post += F("Content-Length:");
  15.     post += webFile.size() + 196;
  16.     post += F("\r\n");
  17.     post += F("----WebKitFormBoundary7MA4YWxkTrZu0gW");
  18.     post += F("Content-Disposition: form-data; name=\"my_file\"; filename=\"555.JPG\"\r\n");
  19.     post += F("Content-Type: image/jpeg\r\n");
  20.     post += F("----WebKitFormBoundary7MA4YWxkTrZu0gW--\r\n");
  21.     delay(1000);
  22.     Serial.print(post);
  23.     String sendData = "AT+CIPSEND=" + String(post.length());
  24.     Serial.println(sendData);
  25.     esp.println(sendData);
  26.     delay(6000);
  27.     if (esp.find(">"))
  28.     {
  29.       Serial.println(F("SENDING  data"));
  30.     }
  31.     else
  32.     {
  33.       Serial.println(F("NOT SENDING"));
  34.       esp.println(F("AT+CIPCLOSE"));
  35.     }
  36.   }
  37.   else
  38.   {
  39.     Serial.println(F("server not found"));
  40.   }
  41.   delay(10000);
  42. }
複製代碼
超新手 發表於 2019-3-7 20:59:48
對, 你看你貼的這個程式, 多了一個 */
esp.println(sendData);*/
根本沒辦法成功 COMPILER
ykyk9898 發表於 2019-3-7 19:32:06
本帖最後由 ykyk9898 於 2019-3-7 19:33 編輯
超新手 發表於 2019-3-7 19:08
可以把程式再貼一次嗎?


#include <SoftwareSerial.h>
#include <SD.h>
#define SD_CS 10
SoftwareSerial esp(4, 5);                   //RX,TX


String ssid = "Ksu-fish";                           //wifi name  
String password = "88888866";                       //wifi password
String server = "120.114.132.69";                         // server name

void connectWifi()                           //wificonnection
{
  String cmd = "AT+CWJAP=\"" +ssid+"\",\"" + password + "\"";
  esp.println(cmd);
  delay(4000);
  
  if(esp.find("OK")){
    Serial.println(F("WIFI Connected!"));
    delay(1000);
  }
  else {  
  Serial.println(F("Cannot connect to wifi"));
  connectWifi();
  }
}
void wifisetup()
{
  esp.println(F("AT"));
  esp.println(F("AT+CWMODE=3"));
  Serial.println(F("Wifi ready"));
}


void setup()
{
  Serial.begin(9600);
  esp.begin(9600);
  pinMode(10, OUTPUT);
  Serial.println(F("Wifi Setup"));
  wifisetup();                         //wifi setup
  connectWifi();
  Serial.print(F("Initializing SD card..."));
  if (!SD.begin(SD_CS)) {
    Serial.println(F("failed!"));
    return;
  }
    Serial.println(F("OK!"));
  test();
}


void loop() {

  

}


void test(){
  File webFile;
  char fileName[13] = "555.JPG";
  String cmd = "AT+CIPSTART=\"TCP\",\"" + server + "\",80";
  esp.println(cmd);
  delay(3000);

  if(esp.find("OK"))
  {
    Serial.println(F("server found"));
    webFile = SD.open(fileName,FILE_READ);
    Serial.print(webFile);
    String post = "POST /skin/upok.php HTTP/1.1\r\n";      
    post += "Host: 120.114.132.69\r\nContent-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW\r\n";
    post += "Content-Length:";
    post += webFile.size()+196;
    post += "\r\n";
    post += "----WebKitFormBoundary7MA4YWxkTrZu0gW";
    post += "Content-Disposition: form-data; name=\"my_file\"; filename=\"555.JPG\"\r\n";
    post += "Content-Type: image/jpeg\r\n";
    post += "----WebKitFormBoundary7MA4YWxkTrZu0gW--\r\n";
    delay(1000);
    Serial.print(post);
    String sendData = "AT+CIPSEND="+String(post.length());
    Serial.print(sendData);
    esp.println(sendData);*/
    delay(6000);
    if (esp.find(">"))
    {
      Serial.println(F("SENDING  data"));
    }
    else
    {
       Serial.println(F("NOT SENDING"));
       esp.println(F("AT+CIPCLOSE"));
    }
  }
  else
  {
    Serial.println(F("server not found"));
  }
  delay(10000);
}


是否是post 那邊寫法的問題所以才一直無法成功上傳或是其他原因
超新手 發表於 2019-3-7 19:08:03
可以把程式再貼一次嗎?
超新手 發表於 2019-3-6 17:48:10
仔細看了一下, 這個程式問題很多
不過先把
esp.print(sendData);
改成
esp.println(sendData);
照理說, 應該就可以顯示 SENDING  data 了才對
雖然.....結果還是錯的
ykyk9898 發表於 2019-3-6 15:40:54
超新手 發表於 2019-3-6 08:46
你確定你貼的程式和執行的程式是同一個嗎?
印出來的資料不一樣. 不像是同一個程式執行的結果 ...

是同一個程式沒錯,因為不太會寫這個所以很多資料是自己上網看跟嘗試的,可能是程式寫得有問題但不太會改,不知是否可以有聯絡方式方便詢問你
超新手 發表於 2019-3-6 08:46:50

你確定你貼的程式和執行的程式是同一個嗎?
印出來的資料不一樣. 不像是同一個程式執行的結果

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-5-5 19:08 , Processed in 0.179381 second(s), 10 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表