Здравствуйте есть следующий код для GSM GPRS модуля, проблема в том что при проверке выходит ошибка 'BYTE' keyword is no longer supported. на строку cell.print(34,BYTE); // ASCII equivalent of symbol ( " ) Пробовал искать в инете подобную проблему, нашел толькл то что в последних версиях ардуино keyword 'BYTE' больше не поддерживается, говорят что данную проблему можно решить через Serial.write() но как можно применить к данной ситуации? В общем что должно получиться: Надо как то символ ( " ) отправить в cell.print минуя больше не работующий BYTE. Затем полагаю возможно возникнет вторая примерно похожая проблема с строкой cell.println(26,BYTE); // ASCII equivalent of Ctrl-Z Код (Text): #include <NewSoftSerial.h> NewSoftSerial cell(2,3); // This creates a new instance of // NewSoftwareSerial under thename gps. // the format in the brackets is (rx,tx) char phoneNumber[] = "+7*********"; // Replace xxxxxxxx with the recipient's mobile number char SMS_Service_Number[] = "+7*********"; // Replace xxxxxxxx with the recipient's mobile number void setup() { cell.begin(19200); delay(35000); // Allow GSM to initialize Serial.begin(19200); // baud rate, like so: Serial.print (" GSM_GPRS System Activated "); } void loop() { cell.print("AT+CMGF=1"); // set SMS mode to text cell.print("AT+CSCA="); //Setting for the SMS Message center number, cell.print(34,BYTE); // ASCII equivalent of " cell.print(SMS_Service_Number); // Phone number cell.print(34,BYTE); // ASCII equivalent of " cell.print("AT+CMGS="); // start our message cell.print(34,BYTE); // ASCII equivalent of " cell.print(phoneNumber); // Phone number cell.println(34,BYTE); // ASCII equivalent of " delay(500); // give the module some thinking time cell.print(" Hi , this is ARDUINO GSM Robot test SMS message" ); // message set to phone number cell.println(26,BYTE); // ASCII equivalent of Ctrl-Z delay(15000); // The GSM module needs to return to an OK status { delay(1); } while (1>0); // if you remove this you will get a text message every 30 seconds or so. } Заранее спасибо!!!
вот ссылка на устройство http://www.elecfreaks.com/wiki/index.php?title=EFCom_GPRS/GSM_Shield все что выше Step 3: Exploring further, работает нормально, все что ниже - проблема.
спасибо, сейчас попробую, а как быть с Ctrl-Z где найти информацию по тому как символ (") превращается в ("0x22")
с символом (") проверку проходит но на Ctrl-Z такая же проблема пологаю как то надо совместить теперь кнопку Ctrl и ("0x7A")
Если cell.println(34,BYTE); // ASCII equivalent of " и при этом cell.println(26,BYTE); // ASCII equivalent of Ctrl-Z и работает cell.print("\0x22"); вместо первого, то логично предположить, что Ctrl-Z можно попробовать выдать при помощи сell.print("\0x1A"); Собственно говоря, весь фокус в возможности вставить в строку символ с любым кодом при помощи конструкции \0xHH , где HH - шестнадцатеричное представление кода символа.
Спасибо за помощь, код проверку прошел до конца но потом вышел error compiling, причина в библиотеках \arduino-1.0.3-windows\arduino-1.0.3\libraries\NewSoftSerial/NewSoftSerial.h:33:2: error: #error NewSoftSerial has been moved into the Arduino core as of version 1.0. Use SoftwareSerial instead. Это уже проблема дугого характера, ладно надо теперь с библиотеками разобраться, как что получится или не получится напишу
Нет, все равно не работает как надо написал проверочный код что бы отследить строки в seria monitor и с наклонной чертой влево и без нее надо какой то другой вариант решения вот что получается Код (Text): char phoneNumber[] = "+79145813412"; void setup() { Serial.begin(9600); Serial.println("AT+CMGF=1"); Serial.print("AT+CSCA="); Serial.print("\0x22"); Serial.print(phoneNumber); Serial.println("0x22"); } void loop() { } в результате в serial monitor выходит AT+CMGF=1 AT+CSCA=+791458134120x22
Сростил, все получилось, но только со знаком (") вот как выглядит код в таком случае Код (Text): char phoneNumber[] = "+79145813412"; void setup() { Serial.begin(9600); Serial.println("AT+CMGF=1"); Serial.print("AT+CSCA="); Serial.write(34); Serial.print(phoneNumber); Serial.write(34); Serial.println(); } void loop() { } а в serial monitor-e все как надо
теперь нужна помощь с т ем как с имитировать нажатие клавиш Ctrl+Z, в ASCII где такую информацию можно раздобыть? Обычно пишут инфу в инете на отдельные клавиши, а как их ссумировать?
Вот еще пример кода подобного нашел у буржуев они символ (") сделали вот так Serial.print("\"\r"); а на месте Ctrl-Z у них стоит Serial.write(26); наверное это и есть то что мне надо, то самое Ctrl-Z в ASCII , надо на GPRS модуле все прогнать код получился таким Код (Text): char phoneNumber[] = "+79145813412"; void setup() { Serial.begin(9600); Serial.println("AT+CMGF=1"); Serial.print("AT+CSCA="); Serial.print("\"\r"); Serial.print(phoneNumber); Serial.println("\"\r"); Serial.write(26); } void loop() { }
полуфинал пока получился такой, буду работать дальше Код (Text): #include <SoftwareSerial.h> // Подключаем библиотеку SoftwareSerial.h SoftwareSerial telefone(2,3); // Соединение с именем telefone, rx-ом на ARDUINO будет pin 2, tx-ом на ARDUINO будет pin 3 // (на GSM модуле все должно быть в инверсии, т.е. // [pin rx arduino подлючается к pin tx GSM GPRS module] и [pin tx arduino подлючается к pin rx GSM GPRS module] ) char phoneNumber[] = "+79147913458"; // Номер на который будет отправлено SMS сообщение char SMS_Service_Number[] = "+79147991000"; // Номер SMS центра (он постоянен, для каждого оператора/региона свой)(Пример: МТС Дальний восток +79147991000) void setup() { telefone.begin(19200); // Запуск соеденения ARDUINO с GSM GPRS модулем delay(5000); Serial.begin(19200); // Запуск соеденения ARDUINO с PC Serial.print (" GSM_GPRS System Activated "); } void loop() { telefone.println("AT+CMGF=1"); // Переводим GSM модуль в режим текста telefone.print("AT+CSCA="); // Активируем номер SMS центра в GSM модуль telefone.print("\"\r"); // Знак ( " ) telefone.print(SMS_Service_Number); // Вводим номер SMS центра в GSM модуль telefone.println("\"\r"); // Знак ( " ) telefone.print("AT+CMGS="); // Активируем номер телефона на который будет отправлено SMS сообщение telefone.print("\"\r"); // Знак ( " ) telefone.print(phoneNumber); // Вводим номер телефона на который будет отправлено SMS сообщение telefone.println("\"\r"); // Знак ( " ) delay(500); // Даем время GSM модулю подумать telefone.print(" Hi , this is ARDUINO GSM Robot test SMS message" ); // Вводим текстовое сообщение которое надо отправить на ранее указаный телефон telefone.write(26); // Ctrl-Z в ASCII delay(15000); { delay(1); } while (1>0); // ВНИМАНИЕ!!!Если удалить эту строку то функция loop начнет слать десятки сотни или даже милионы сообщений в секунду // что приведет к огроменным денежным расходам за услугу SMS сообщений!!!!! }
5 дней по 9 часов непрерывного поиска в инете книгах и черт знает где дали положительные результаты, надеюсь этот раздел поможет тем кто пойдет по тому же направлению что и я. Кстати Библиотека NewSoftSerial.h у меня не пошла, буржуи пишут что в новых версиях ардуино функции этой библиотеки уже включены по умолчанию в стандартную библиотеку SoftwareSerial.h
Однако выяснилось, что 0 сразу после слэша в такой конструкции лишний (когда речь идет о символе в строке). Прошу прощения за невольную дезинформацию.