Здравствуйте! Имею: uno(клон), ethernet shield5100 (клон) и датчик влажности/температуры. Собираю информацию о влажности и температуре в mysql. Код: Код (C++): #define DHTPIN 2 #define DHTTYPE DHT11 #include <DHT.h> #include <SPI.h> #include <MySQL_Connection.h> #include <MySQL_Cursor.h> #include <Ethernet.h> byte mac[] = { 0x00, 0xFF, 0xBB, 0xFF, 0xDE, 0xDD }; EthernetClient client; IPAddress server_addr(127, 0, 0, 1); unsigned int mysqlPort = 3306; MySQL_Connection conn((Client *)&client); char user[] = "USER"; char password[] = "PASSWORD"; boolean sqlconnect = false; DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); if (Ethernet.begin(mac) == 0) { Serial.println("Failed to configure Ethernet using DHCP"); for (;;) ; } if (conn.connect(server_addr, 3306, user, password)) { Serial.println("fqw"); } dht.begin(); } void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); float f = dht.readTemperature(true); String one; String four; String str; char query[160]; if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("Failed to read from DHT sensor!"); return; } one = "set @b = (select count(*) from tempcontrol.q)+1;set @s = (select now());insert into tempcontrol.q(id,temp, h,t) values(@b,"; four = "@s)"; str = one + t + "," + h + "," + four; MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn); const char *str2 = str.c_str(); sprintf(query, str2); cur_mem->execute(query); delete cur_mem; delay(300000); } Сервер СУБД удалённый. Проблема следующего характера: через некоторое время данные перестают отдаваться в базу. Время - около 7 часов. Где-то вычитал, что может быть проблема с нехваткой памяти, но вроде бы всё реализовано достаточно просто. Подскажите, куда копать. Заранее спасибо.
Все реализовано довольно паршиво. Это проверяет совсем не то. https://ru.wikipedia.org/wiki/NaN Это все делается в sprintf. http://www.c-cpp.ru/content/printf Все константные строки обернуть в F() https://www.arduino.cc/en/Reference/PROGMEM one = F("set @b = (select count(*) from tempcontrol.q)+1;set @s = (select now());insert into tempcontrol.q(id,temp, h,t) values(@b,"); В mysql указать поле id как auto_inrement, запрос упростить до "insert into tempcontrol.q(temp, h,t) values(%f, %f, now())" Отформатировать код как положено, выкинуть лишние переменные. Дальше уже можно будет разбираться с проблемой, если она останется.