2016-10-13 7 views
1

안녕하세요. 일련의 센서에서 수집 한 데이터를 Arduino를 사용하여 서버에 보내려고합니다.Arduino에서 POST를 사용하여 HTTP를 통해 데이터 보내기

내 코드는 입니다. 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); 
    } 
관련 문제