Dove5
September 15, 2016, 2:51pm
1
Can anyone help me with this? I am using Gsm with arduino and want to send a message to a number I save in a variable. But my AT command does not work.
Here is the relevant portion of code:
String number1 = "03360234233";
Serial1.print("AT+CMGS=\"" + number1 + "\"");
Did you try Serial1.write instead?
Using this and printing to the serial monitor:-
String number1 = "03360234233";
Serial.print("AT+CMGS=\"" + number1 + "\"");
yields this result:-AT+CMGS="03360234233"
Is that what it's supposed to look like?
(I've never used a GSM shield.)
Edit: Serial1.write("AT+CMGS=\"" + number1 + "\"");
results in:-no matching function for call to 'HardwareSerial::write(StringSumHelper&)'
Dove5
September 15, 2016, 4:05pm
5
OldSteve:
Using this and printing to the serial monitor:-
String number1 = "03360234233";
Serial.print("AT+CMGS="" + number1 + """);
yields this result:-
AT+CMGS="03360234233"
Yes. When I insert the number instead of variable, message is sent. But with variable, there's no error and nothing is sent.
Which microcontroller are you using?
Serial1 will work on 1284 and 2560.
For Uno, only Serial is available. To talk to a SMS device you then need one of the software serial libraries and have to define a SerialSMS name or similar to use.
Dove5
September 15, 2016, 4:15pm
7
I am using arduino mega 2560.
Have you tried:-
char number1[12] = "03360234233";
Serial1.print("AT+CMGS=\"");
Serial1.print(number1);
Serial1.print("\"");
or
char number1[12] = "03360234233";
char outString[22];
sprintf_P(outString, PSTR("AT+CMGS=\"%s\""), number1);
Serial1.print(outString);
I've never used, and don't trust, the 'String' class.
Dove5
September 16, 2016, 5:32am
9
I tried it with char array. It doesn't work too.
There should be no difference between this:-
char number1[12] = "03360234233";
char outString[22];
sprintf_P(outString, PSTR("AT+CMGS=\"%s\""), number1);
Serial1.print(outString);
and this:-Serial1.print("AT+CMGS=\"03360234233\""); // You said this works.
Both should produce exactly the same result.