Написание функции отправки сообщения
- Войдите на сайт для отправки комментариев
Пнд, 16/04/2012 - 12:34
Добрый день! Имеется рабочий скетч отправке СМС
void setup()
{
Serial.begin(19200);
Serial.print("\r");
delay(1000);
Serial.print("AT+CMGF=1\r");
delay(1000);
Serial.print("AT+CMGS=\"89231*******\"\r"); /
delay(1000);
Serial.print("SIM900 and Arduino say Hi!\r"); //The text for the message
delay(1000);
Serial.print(26,BYTE); //Equivalent to sending Ctrl+Z
}
void loop()
{ }
не получается переделать из него функцию, чтоб в каждом месте не втыкать кусок этой программы, а указать переменную типа string, которую нужно отправить и вызвать эту самую функцию.
Помогите если кто шарит,я просто не программист,но пришлось возиться в связи с обстоятельствами...
Вот моя нерабочая версия
void setup()
{
Serial.begin(19200); //Default serial port setting for the GPRS modem is 19200bps 8-N-1
char soobshenie[]="Priveeet";
otpravSMS(soobshenie);
}
void loop()
{
//We just want to send the SMS only once, so there is nothing in this loop.
//If we put the code for SMS here, it will be sent again and again and cost us a lot.
}
void otpravSMS(char soobshenie[]){
Serial.print("\r");
delay(1000); //Wait for a second while the modem sends an "OK"
Serial.print("AT+CMGF=1\r"); //Because we want to send the SMS in text mode
delay(1000);
Serial.print("AT+CMGS=\"8923*******\"\r"); //Start accepting the text for the message
//to be sent to the number specified.
//Replace this number with the target mobile number.
delay(1000);
Serial.print("PRIVEEEThhhhhh\r"); //The text for the message
delay(1000);
Serial.print(26,BYTE); //Equivalent to sending Ctrl+Z
}
Никто не сможет подсказать?
boolean sendNow = 0; //маркер который будет включать отправку void setup() { Serial.begin(19200); } void loop() { if (Serial.available() > 0){ if (Serial.read() == 49){ //если передать "1" sendNow = 1; //маркер установится в 1 } } otpravSMS(); // и произойдет отправка } void otpravSMS(){ if(sendNow == 1){ Serial.print("\r"); delay(1000); Serial.print("AT+CMGF=1\r"); delay(1000); Serial.print("AT+CMGS=\"8923*******\"\r"); delay(1000); Serial.print("Privet\r"); delay(1000); Serial.write(26); sendNow = 0; // после отправки маркер опять будет ждать } }Немного не правильно выразил свою мысль, нужно например, чтобы в программе в смс отправилась какая то фраза, например ПРИВЕТ.т.е. я вызываю функцию с аргументом ПРИВЕТ, а если надо отправить пока, то соответственно otpravSMS(ПОКА) .
можно ли такое сделать?не хочу загромождать скетч лишними однотипными строчками, хотелось бы запихать их в функцию а потом просто к ней обращаться с нужным для отправки текстом
void setup() { Serial.begin(19200); //Default serial port setting for the GPRS modem is 19200bps 8-N-1 char soobshenie[]="Priveeet"; } void loop() { otpravSMS("It is a good day to die"); } void otpravSMS(char soobshenie[]){ Serial.print("\r"); delay(1000); //Wait for a second while the modem sends an "OK" Serial.print("AT+CMGF=1\r"); //Because we want to send the SMS in text mode delay(1000); Serial.print("AT+CMGS=\"8923*******\"\r"); //Start accepting the text for the message //to be sent to the number specified. //Replace this number with the target mobile number. delay(1000); Serial.print(soobshenie); //The text for the message delay(1000); Serial.write(26); }ты работаеш с sim900? icomsat v1.1?