2016-10-13 4 views
1

Привет, Я пытаюсь отправить данные, собранные из серии датчиков, на сервер, используя Arduino с экраном WiFi.Отправка данных через HTTP с помощью POST с Arduino

Мой код: void readdata() { char dataBuff [300];

logfile.seek(pos); 
    pos = logfile.position(); 
    while(logfile.available()){ 
    while(logfile.position() < logfile.size()){ 
     String dataBuff = logfile.readStringUntil('\n'); 
Serial.println(F("DataBuff is")); 
Serial.println(dataBuff); 

     //Variables for WiFi Shield 
    char ssid[] = "xxx";  //your network SSID (name) 
    char pass[] = "xxx"; 
    char server[] = "http://example.com"; 
    int dataSize = sizeof(dataBuff); 

    while (status != WL_CONNECTED) { 
    Serial.print(F("Attempting to connect to SSID: ")); 
    Serial.println(ssid); 

    status = WiFi.begin(ssid, pass); 

    // wait 1 second for connection: 
    delay(1000); 
    } 
    Serial.println(F("Connected to wifi")); 
// #endif 

    // check for the presence of the shield: 
    if (WiFi.status() == WL_NO_SHIELD) { 
    Serial.println(F("WiFi shield not present")); 
    // don't continue: 
    while (true); 
    } 

    int fileSize = 0; 
    fileSize = sizeof(dataBuff); 
    uint32_t fileLength = 0; 
    fileLength = 137 + fileSize + 40; 
    Serial.println (fileLength); 

    Serial.println(F("\nStarting connection to server...")); 
    Serial.println(server); 
    // if you get a connection, report back via serial: 
    if (client.connect(server, 80)) { 
    Serial.println(F("connected to server")); 
    // Make a HTTP request: 

    client.print(F("POST /uploadf HTTP/1.1\r\n")); 
    client.print(F("Host: example.com\r\n")); 
    client.print(F("User-Agent: Frank/1.0\r\n")); 
    client.print(F("Accept-Encoding: gzip, deflate\r\n")); 
    client.print(F("Accept: */*\r\n")); 
    client.print(F("Connection: keep-alive\r\n")); 
    client.print(F("Content-Length: ")); 
    client.print(fileLength); 
    client.print(F("\r\n")); 
    client.print(F("Content-Type: multipart/form-data; boundary=710ff0c6cf2d4c73b12db64cab12e58c\r\n")); 
    client.print(F("\r\n")); 
    client.print(F("--710ff0c6cf2d4c73b12db64cab12e58c\r\nContent-Disposition: form-data; name=\"file\"; filename=\"")); 
    client.print(dataSent); 
    client.print(F("\"")); 
    client.print(F("\r\n")); 
    client.print(F("Content-Type: text/plain\r\n\r\n")); 
    client.print(dataBuff); 
    client.print(F("\r\n--710ff0c6cf2d4c73b12db64cab12e58c--\r\n")); 
    } 

    while(client.connected()){ 
    while (client.available()&& status==WL_CONNECTED) { 
    char c = client.read(); 
    Serial.write(c); 
    } 
    } 

    client.stop(); 

    // if the server's disconnected, stop the client: 
    if (!client.connected()) { 
    Serial.print(F("\r\n")); 
    Serial.println(F("disconnecting from server.")); 
    client.flush(); 
    client.stop(); 

    } 
    } 
    } 
logfile.close(); 
while (true); 
    } 

Когда я запускаю код данные правильно читать, но при подключении к серверу я получаю следующее

подключен к серверу

Отсоединение от сервера.

ответ

0

Исправить это: Для тех, кто сталкивается с подобной проблемой, вложенный код позволяет вам открыть файл и прочитать данные по одной строке за раз и загрузить сервер.

void readdata() 
    { 

      //Variables for WiFi Shield 
    char ssid[] = "example";   //your network SSID (name) 
    char pass[] = "example";   
    char server[] = "http://sleeppapi.pythonanywhere.com"; 

    while (status != WL_CONNECTED) { 
    Serial.print(F("Attempting to connect to SSID: ")); 
    Serial.println(ssid); 

    status = WiFi.begin(ssid, pass); 

    // wait 1 second for connection: 
    delay(1000); 
    } 
    Serial.println(F("Connected to wifi")); 
// #endif 

    // check for the presence of the shield: 
    if (WiFi.status() == WL_NO_SHIELD) { 
    Serial.println(F("WiFi shield not present")); 
    // don't continue: 
    while (true); 
    } 

    int fileLength = 0; 
    fileLength = 137 + filesize + 40; 
    Serial.println(filesize); 

    Serial.println(F("\nStarting connection to server...")); 
    Serial.println(server); 
    // if you get a connection, report back via serial: 
    if (client.connect(server, 80)) { 
    Serial.println(F("connected to server")); 

    // Make a HTTP request: 

    client.print(F("POST /uploadf HTTP/1.1\r\n")); 
    client.print(F("Host: example.com\r\n")); 
    client.print(F("User-Agent: Frank/1.0\r\n")); 
    client.print(F("Accept-Encoding: gzip, deflate\r\n")); 
    client.print(F("Accept: */*\r\n")); 
    client.print(F("Connection: keep-alive\r\n")); 
    client.print(F("Content-Length: ")); 
    client.print(fileLength); 
    client.print(F("\r\n")); 
    client.print(F("Content-Type: multipart/form-data;  boundary=710ff0c6cf2d4c73b12db64cab12e58c\r\n")); 
    client.print(F("\r\n")); 
    client.print(F("--710ff0c6cf2d4c73b12db64cab12e58c\r\nContent-Disposition: form-data; name=\"file\"; filename=\"")); 
    client.print(dataSent); 
    client.print(F("\"")); 
    client.print(F("\r\n")); 
    client.print(F("Content-Type: text/plain\r\n\r\n")); 
    logfile=SD.open(nameFile); 
    while(logfile.available()){ 
    while(logfile.position() < logfile.size()){ 
     String dataBuff = logfile.readStringUntil('\n'); 
     client.print(dataBuff); 
     client.print("\n"); 
    } 
    } 
    client.print(F("\r\n--710ff0c6cf2d4c73b12db64cab12e58c--\r\n")); 
    //client.flush(); 
    } 

    while(client.connected()){ 
    while (client.available()&& status==WL_CONNECTED) { 
     char c = client.read(); 
    Serial.write(c); 
    } 
} 

    // if the server's disconnected, stop the client: 
    if (!client.connected()) { 
    Serial.print(F("\r\n")); 
    Serial.println(F("disconnecting from server.")); 
    client.stop(); 

    } 
logfile.close(); 
while (true); 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^