Запись тел.ноера в СИМ
- Войдите на сайт для отправки комментариев
Вс, 12/04/2015 - 08:23
Для записи тел. номера в СИМ используется команда:
gsm.SimpleWriteln( "AT+CPBW = 5, "+380671234566 "," ) ;
При компилировании выдается ошибка:
GSM_GPRSLibrary_AT_MY_PROJECT.ino:95:50: error: expected ')' before string constant
Error compiling.
ino:95:50 соответствует порядковому номеру данной команды в программе
Помогите осознать в чем ошибка?
При вводе команды из терминала номер записывается без проблем
Спасибо
IMHO +380671234566 нужно принудительно перевести в строку. + может оцениваться как конкатинация строк
Кавычки там неправильно расставлены, проверьте.
И последняя запятая - зачем она, если после неё ничего нет?
А как правильно кавычки расставить?Я их уже по разному расставлять пробовал.Ничего не меняется.Запятая случайно осталась
а так?
gsm.SimpleWriteln( "AT+CPBW = 5, +380671234566");
или
gsm.SimpleWriteln( "AT+CPBW = 5,"+"+380671234566");
или
String CmdString = String("AT+CPBW = 5,"+"+380671234566");
gsm.SimpleWriteln(CmdString);
Если ввести из терминала , то номер сораняется успешно
Хм ... Сигналку для монтенегры творите ?
я всегда думал, что кавычек " должно быть четное количество, а именно две.
А как правильно кавычки расставить?Я их уже по разному расставлять пробовал.Ничего не меняется.
Я же не знаю, какую вы команду набираете в терминале. :)
Вот, X-Dron написал - первый вариант скорее всего будет работать.
Второй и третий, насколько я понимаю, будут работать неправильно, даже если скомпилируются без ошибок.
Строковые константы объединяются без знака "+", вот так:
Разницы с первым вариантом никакой.
Объекты типа String суммировать плюсом можно, но для этого компилятор должен понять, что хотя бы одно из слагаемых имеет этот тип. Как-нибудь так:
Правда, аргумент типа String скорее всего не понравится функции gsm.SimpleWriteln, и придётся его снова преобразовывать в обычную строку.
-----
И ещё, там в строках пробелы встречаются. Не знаю, допустимы ли они в модемных командах. Если не работает - попробуйте без них.
В первом варианте компиляция проходит успкшн нр при выполнении модем возвращает ошибку и номер не сохраняется
А, понял. Кавычки тоже должны входить в передаваемую строку. :)
По описанию команды в SimpleWriteln в библиотеке, она имеет всегда один аргумент. (char *comm, или char const *comm, или const __FlashStringHelper *pgmstr, или int comm)
Соответственно, там не должно быть ничего кроме строки символов. Как уже рекомендовали попробуйте убрать лишние пробелы, или создайте строку с указанием, что номер в международном формате.
gsm.SimpleWriteln( "AT+CPBW=5,+380671234566");
или
gsm.SimpleWriteln( "AT+CPBW=5,+380671234566,145");
насчет \" тоже хорошая идея
Datak,X-Dron огромное спасибо.
Благодарность всем принявшим участие в обсуждении