переменная float (температура) в отправленном смс
- Войдите на сайт для отправки комментариев
Приветствую!!!
Пишу прогу запроса температуры по смс - если во входящем сообщении содержится текс "Temp", считываю данные с датчика температуры ds18B20, присваиваю значение температуры переменной "Temp" - тип float
if (strcmp(message, "Temp") == 0) { byte data[2]; ds.reset(); ds.write(0xCC); ds.write(0x44); ds.reset(); ds.write(0xCC); ds.write(0xBE); for (byte i = 0; i < 5; i++) { data[i] = ds.read ();} raw = (data[1] << 8) | data[0]; Temp = (float)raw / 16.0; // переменная Temp - float
Считал значение и в ответном смс должно приходить сообщение со значением температуры. Использую библиотеку "GPRS_Shield_Arduino.h". Никак не могу победить ошибку error: no matching function for call to 'GPRS::sendSMS(char [20], float&)' с преобразованием типа переменной 'float' to 'char*'
функция отправки смс
gprsTest.sendSMS(phone, Temp);
конвертирую sprintf(Temp,"%f F", temp); и далее вывести уже конверт переменную дуина не понимает.
gprsTest.sendSMS(phone, temp);
та же ошибка
пробовал разложить в строку
dtostrf(Temp, 4, 4, charVal); char* temp = ""; for(int a=0;a < sizeof(charVal); a++) {temp += charVal[a];}
тоже не работает. Прошу помощи как еще можно конвертировать переменную для отправки командой sendSMS(phone, char* data); без ошибки 'float' to 'char*'
Пишу прогу ... не работает.
С прогами всегда так.
Ну, нету в Вашей библиотеке такой функции, либо добавьте её в библиотеку, либо отправляйте через sendSMS(phone, char* data);
Это Вы, похоже, не понимаете, что делаете. Сам по себе подход имеет право быть и должен работать. Вы же, похоже, перепутали параметры sprintf, но точно сказать не могу ... если б Вы не экономили место на дисках сервера, а этот кусок полнстью привели, можно было бы смотреть
Опять же. Блин, ну вот как у Вас описана charVal? Чего Вы, блин, секрет делаете из кода?
Если charVal описан правильно (типа char charVal[100500]), то выбросьте последнюю строку с for как гнусное извращение и просто используйте эту charVal в качестве второго параметра функции sendSMS(phone, char* data); и будет море счастья.
Вопрос можно снимать!!! Разобрался с кодом и теперь в ответнос смс приходит значение температуры в виде "25.38*C". Может кому пригодится преобразовать таким методом переменные пользуйтесь! код рабочий.
может есть вариант и по проще, но код рабочий
----Если charVal описан правильно (типа char charVal[100500]), то выбросьте последнюю строку с for как гнусное извращение и просто используйте эту charVal в качестве второго параметра функции sendSMS(phone, char* data); и будет море счастья.---
не знаю как цитировать(((( Выбросил это гнусное извращение и пустое приходило а потом вооще всё выбросил))) и стало счастье)))))))
уменьшил buff
Как Вы понимаете 14-ую строку Вашего т.н. "рабочего кода"? Вы ... типа извращенец? :))))
)))) Да может быть))) но если
то в сериал порту вижу
и в добавок почему то нет конца строки в сериал порту, бегунок убегает .....
Предложите вариант "не извращенца" буду благодарен Вам
У меня друг как то выстрелил неглядя из духовушки и убил воробья. Это примерно тоже самое...
Как Вы понимаете 14-ую строку Вашего т.н. "рабочего кода"? Вы ... типа извращенец? :))))
Вы мне тут недавно про 2х2 сказали, теперь верю.
sergeyksv45
Научитесь скобки нормально ставить, читать не возможно.
По делу
первая строка в переводе на русский язык означает - сделать то, что находится в скобках, 1 РАЗ !!!
то есть БЕССМЫСЛЕННА.
В поисках решения проблемы возникшей в данной ситуации на просторах инета нашел такое решение на англ. яз. сайте. У меня пока нет больших познаний в программировании так что приходится выходить из ситуации таким способом. Я "паяльник", а не программист и занимаюсь ремонтом сотовых, перепайка микрух "на шарах" для меня пустяк , а вот в программировании признаю пока что я "ноль"
Как Вы понимаете 14-ую строку Вашего т.н. "рабочего кода"? Вы ... типа извращенец? :))))
Вы мне тут недавно про 2х2 сказали, теперь верю.
sergeyksv45
Научитесь скобки нормально ставить, читать не возможно.
По делу
первая строка в переводе на русский язык означает - сделать то, что находится в скобках, 1 РАЗ !!!
то есть БЕССМЫСЛЕННА.
Полностью с Вами согласен!!! Выбросил бессмысленную строку и всё работает. Сижу разбираю код по кирпичику что как работает - надо понять что к чему и зачем именно так, это всё выдернул на англ. яз. сайте.