Serial - способы вывода\ввода
- Войдите на сайт для отправки комментариев
Пт, 21/11/2014 - 19:59
Нужно в порт выплюнуть данные, если делаем так:
Serial.print("{\"sensor_data\":{"); //Открываем тег для API [мгновенные значения датчиков]
//=====DTH=HOME=======
Serial.print("\"th\":");
Serial.print(dthHome.temperature, 1);
Serial.print(",");
Serial.print("\"hh\":");
Serial.print(dthHome.humidity, 1);
Serial.print(",");
//=====DTH=STREET=====
Serial.print("\"ts\":");
Serial.print(dthStreet.temperature, 1);
Serial.print(",");
Serial.print("\"hs\":");
Serial.print(dthStreet.humidity, 1);
Serial.print(",");
//=====t window=====
Serial.print("\"tw\":");
Serial.print(tw);
Serial.print(",");
//=====t balcon=====
Serial.print("\"tb\":");
Serial.print(tb);
Serial.print(",");
то данные идут постепенно (построчно), и принимающая сторона не принимает их целиком, а рвёт на куски. А должна быть одна строка.
Как сделать так, чтоб вывести данные разом, одной командой Serial.print, в одну строку все сразу?
Надо сформировать буфер в котором будет вся строка, а потом отправить этот буфер. Можно попробовать воспользоваться функцией sprintf(), предварительно преобразовав дробные(если есть) части в строки.
Документация по функциям обычно есть в самой среде /Arduino/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual.pdf
Или на принимающей стороне проверять корректность данных и ждать хвоста.
06-07, 09-12, 14-15, 17-20, 22-25 - шли одним куском.