Проблема со строкой и аргументом функции
Я пытаюсь отправить SMS с помощью модуля GSM с Arduino Mega. Я выполнил руководство и загрузил библиотеку SIM908IDE100. Я использую функцию
SendSMS(String&, const char [27]);.
sms.SendSMS("1234567890","Текстовое сообщение");
где «1234567890» — это номер телефона, на который я хочу отправить SMS, а «Текстовое сообщение» — это текст SMS.
Если вместо этого я попытаюсь передать функции строку, содержащую номер телефона
Номер строки = "1234567890";
sms.SendSMS(номер, «Текстовое сообщение»);
Я получаю следующую ошибку:
статус выхода 1
нет функции сопоставления для вызова 'SMSGSM::SendSMS(String&, const char [27]);'
Я не понимаю, что означает строка, за которой следует амперсанд. Что я должен передать функции в качестве первого аргумента?
@arderino, 👍0
Обсуждение1 ответ
Лучший ответ:
Прототип функции в sms.h это
char SendSMS(char *number_str, char *message_str);
если number — это String, у вас должно быть
sms.SendSMS((char*) number.c_str(),"Text message");
c_str() — это функция класса Stringng. Он возвращает указатель на внутренний массив символов объекта String.
Приведение к char* необходимо, поскольку автор библиотеки не сделал параметр константой с помощью const char*. (Хорошей практикой является объявление указателей и ссылок как констант.)
В сообщении об ошибке нет соответствующей функции для вызова 'SMSGSM::SendSMS(String&, const char [27]); показаны аргументы, которые вы пытаетесь использовать. String& — это ссылка на некоторый экземпляр типа String
если я использую sms.SendSMS(number.c_str(),"Text message"); я получаю ошибку: нет соответствующей функции для вызова 'SendSMS(const char*, const char [13])', @arderino
sms.SendSMS((char*) number.c_str(),"Текстовое сообщение");, @Juraj
большое спасибо, теперь работает. Я до сих пор не до конца понимаю, как работает (char*), не могли бы вы вкратце это объяснить? еще раз спасибо, @arderino
https://www.tutorialspoint.com/cprogramming/c_strings.htm, @Juraj
- Как разделить входящую строку?
- Моделирование Arduino Mega 2560 с GSM модулем с использованием Proteus
- Проблема с подключением Arduino Mega 2560 и GSM shield (официальный M10)
- Модуль SIM808: команда определения местоположения GSM (AT+CIPGSMLOC=1,1) дает неверное значение после выполнения команды отправки сообщения (AT+CMGS=+91xxxxxxxx)
- Arduino Mega + SIM808 GSM + модуль GPS + программа включается без нажатия кнопки?
- Arduino GSM Shield GSM_READY никогда не готов
- Как извлечь широту и долготу из GPS
- Arduino Serial.ReadString() проблема
вы уверены, что это не
sms.SendSMS("1234567890","Текстовое сообщение");, дающее вам "нет соответствующей функции"?, @Juraj@Юрай Да, я уверен.
sms.SendSMS("1234567890","Текстовое сообщение");работает нормально, и SMS отправляется без проблем., @arderinoПодсказка: попробуйте
sms.SendSMS(String("1234567890"),"Text message");, @Mikael Patel