Добрый день! Загружаю скетч для UNO Код (C++): // библиотека для работы с GPRS устройством #include <GPRS_Shield_Arduino.h> #include <SoftwareSerial.h> #define MESSAGE_LENGTH 160 #define MESSAGE_ON "On" #define MESSAGE_OFF "Off" #define MESSAGE_STATE "State" #define RELAY 5 char message[MESSAGE_LENGTH]; char phone[16]; char datetime[24]; bool stateRelay = false; GPRS gprs(Serial); void setup() { pinMode(RELAY, OUTPUT); digitalWrite(RELAY, LOW); Serial.begin(9600); gprs.powerOn(); while (!Serial) { } Serial.begin(9600); while (!gprs.init()) { delay(1000); Serial.print("GPRS Init error\r\n"); } Serial.println("GPRS init success"); } void loop() { if (gprs.ifSMSNow()) { gprs.readSMS(message, phone, datetime); Serial.print("From number: "); Serial.println(phone); Serial.print("Datetime: "); Serial.println(datetime); Serial.print("Recieved Message: "); Serial.println(message); setRelay(phone, message); } } void setRelay(char f_phone[], char f_message[]) { if (strcmp(f_message, MESSAGE_ON) == 0) { Serial.println("OK! Power is On"); digitalWrite(RELAY, HIGH); stateRelay = true; gprs.sendSMS(f_phone, "Power is On"); } else if (strcmp(f_message, MESSAGE_OFF) == 0) { Serial.println("OK! Power is Off"); digitalWrite(RELAY, LOW); stateRelay = false; gprs.sendSMS(f_phone, "Power is Off"); } else if (strcmp(f_message, MESSAGE_STATE) == 0) { if (stateRelay) { Serial.println("State: Power is On"); gprs.sendSMS(f_phone, "Power is On"); } else { Serial.println("State: Power is Off"); gprs.sendSMS(f_phone, "Power is Off"); } } else { Serial.println("Error... unknown command!"); gprs.sendSMS(f_phone, "Error...unknown command!"); } и в ошибках возникает сл. запись: In function 'void setRelay(char*, char*)': warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] gprs.sendSMS(f_phone, "Power is On"); Видимо поэтому обратно на телефон не приходит SMS о выполнении команды. Помогите плз. решить проблему
компилятор тупо компилирует программу при условии правильности синтаксиса. Работоспособность программы ему до фонаря.
В программе отладочная информация в Serial выдаётся. Вы её как-то мониторите? Лишнего ни чего там не наблюдаете?
СМС не приходит, потому что у вас в программе модем и сериал монитор подключены к одному выходу. И видно, что код явно собран из кусков. И тот, кто собирал - ровно ничего в нем не понял. Если это так - вам надо сначала понять, как это работает - иначе ничего не выйдет.
Честно не понимаю о какой строке кода речь? И причем тут выход? Скажите почему на мониторе порта Serial.println("OK! Power is On") выводиться, а sms по этой команде gprs.sendSMS(f_phone, "Power is On") не отправляется?
У тебя модем работает через сериал? Или что по твоему означает вот эта строка GPRS gprs(Serial); ? А ты в этот же сериал всякую хрень пишешь свою. Ну, и как по-твоему, модему это нравится?