发送数据到WEB服务器:数据正在发送,但只有一次
问题描述:
该代码将数据发送到我的服务器,它正在使用PHP获取并发送到MySQL。 主要问题是,我使用循环void loop()
,但它只执行一次任务。如果我将重置Arduino,然后它发送数据两次等..我试图发送多个数据延迟没有一个周期,但它重复发送数据,这是发送第一..帮助:)发送数据到WEB服务器:数据正在发送,但只有一次
#include <SPI.h>
#include <Ethernet.h>
#include <stdlib.h> //Including libraries
int moi_int = 12;
int temp_int = 13; //doing some convertion
int moi_int1 = moi_int %10;
int moi_int2 = moi_int - moi_int1;
int moi_int3 = moi_int2/10;
char moi1 = (char)(((int)'0')+moi_int1);
char moi2 = (char)(((int)'0')+moi_int3);
int temp_int1 = temp_int %10;
int temp_int2 = temp_int - temp_int1;
int temp_int3 = temp_int2/10;
char temp1 = (char)(((int)'0')+temp_int1); //convertion
char temp2 = (char)(((int)'0')+temp_int3);
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte server[] = { my server };
IPAddress ip(my ip);
EthernetClient client;
void setup() {
Serial.begin(9600);
}
void SendInfo() //Info
{
char string[29]; //Here is displayed by char some adress (data) I need to send
string[0] = 'G'; string[1] = 'E'; string[2] = 'T'; string[3] = ' '; string[4] = '/'; string[5] = 'a'; string[6] = 'd'; string[7] = 'd';
string[8] = '.'; string[9] = 'p'; string[10] = 'h'; string[11] = 'p'; string[12] = '?'; string[13] = 't'; string[14] = 'e'; string[15] = 'm';
string[16] = 'p'; string[17] = '1'; string[18] = '='; string[19] = temp2; string[20] = temp1; string[21] = '&'; string[22] = '&';
string[23] = 'm'; string[24] = 'o'; string[25] = 'i'; string[26] = '1'; string[27] = '='; string[28] = moi2; string[29] = moi1;
String adresas(string);
client.println(adresas); // Sending Data
client.print(" HTTP/1.1");
client.println("Host: my server");
client.println("Connection: close");
client.println();
}
void Connect() //Connecting
{
Ethernet.begin(mac, ip);
delay(1000);
if (client.connect(server, 80)) {
delay(1000);
SendInfo();
delay(1000);
}
else Serial.println("connection failed");
}
void loop() //Main Loop
{
Connect();
}
答
你应该在建立呼叫开始()只有一次:
void setup() {
...
Ethernet.begin()
你叫
client.connect(server, 80)
,但从来没有一个匹配的脱节。您需要添加这些一个清理的连接:
if (client.connect(server, 80)) {
...
client.stop();
}
另一种方法是重新用户在每次循环之前打开的连接。
// open the connection if needed
if(!client.connected()) {
client.connect(server, 80);
}
// ensure connection is available before trying to write
if(client.connected()) {
// do something with connection
}
如果你将要传输非常频繁的小数据,则因为更短的时间被浪费在连接的打开/关闭这第二种方法比较好。