Given my below code, with a Nano 328P:
#include <SoftwareSerial.h>
int i;
SoftwareSerial mySerial(3, 4);
void setup()
{
mySerial.begin(9600); // 4G LTE Module
Serial.begin(9600); // Serial Monitor
delay(100);
}
void loop()
{
if (Serial.available()>0)
switch(Serial.read())
{
case 's':
Serial.println("Sending text Message through 4G LTE Module");
mySerial.println("AT+CMGF=1\r"); //Set module Mode
delay(100);
mySerial.println("AT+CMGS=\"727xxxxxxx\"\r");
delay(100);
mySerial.print("Hello Mom hope you are doing very well");
delay(100);
mySerial.write(0x1A);
delay(1000);
break;
case 'r':
mySerial.println("AT+CNMI=2,2,0,0,0"); // To receive a live SMS
delay(1000);
break;
case 'c':
if(i==0)//i variable to ensure that only one call request will be sent by gsm during pressing and holding the pushbutton;
{
Serial.println("Calling through 4G LTE Module");
delay(1000);
mySerial.println("ATD727xxxxxxx;"); // ATDxxxxxxxxxx; semicolon should be at the last ;AT command that follows UART protocol;
Serial.println("Calling 727xxxxxxx");
delay(1000);
i++;
}
i=0;
break;
}
if (mySerial.available()>0)
Serial.write(mySerial.read());
}
This is the result:
The full SMS text is sent to the recipient.
What might cause this?
Can it be corrected?

