user13553: I enable messages about new SMS
AT+CNMI=2,2,0,0,0

OK

and when received sms, output like this.
+CMT: "+79XXXXXXXXX","1","15/09/23,01:34:03+24"
Test

But when I read message, output only before <CR><LF>
I don't see text of message.
AT+CMGR=1

+CMGR: "REC READ","+79XXXXXXXXX","1","15/09/23,00:34:17+24"

AT+CMGL="ALL"

+CMGL: 1,"REC READ","+79XXXXXXXXX","1","15/09/23,00:34:17+24"
+CMGL: 2,"REC READ","+79XXXXXXXXX","1","15/09/23,01:34:03+24"

I use following  (via SoftwareSerial) code for test this.
SMSGSM.GetSMS and SMSGSM.GetAuthorizedSMS of GSM GPRS GPS Shield Library receive only phone number without sms text.
I use this shield:

AT+GSV

SIMCOM_Ltd
SIMCOM_SIM900
Revision:1137B05SIM900M64_ST_ENHAN


user11763: This is most likely a case of overrun SoftwareSerial buffer. You are reading too slowly from the modem, especially with the Serial.print()s in your code. You should look for SoftwareSerial.h in C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial if you're using Win 8 and above. Or just search your PC for it. Look for this line:
    #define _SS_MAX_RX_BUFF 64

Change 64 to 256 and save. If it solves your problem, try reducing 256 to 128 to see if it still works. The greater the size of the buffer, the lesser the amount of memory available to the rest of your program. 
You could also try this, to interact with the module:
#include <SoftwareSerial.h>

SoftwareSerial SIM900(7,8);

void setup() {
  Serial.begin(19200);
  SIM900.begin(19200);
}

void loop() {
  // put your main code here, to run repeatedly:
  while (Serial.available() > 0){
    SIM900.write(Serial.read());
  }
  while (SIM900.available() > 0){
    Serial.write(SIM900.read());
  }
}

It does the same thing as your code and doesn't require adjusting buffer size, though I still recommend you make the change if you will use other sketches.

13553: <p>I enable messages about new SMS</p>

<pre><code>AT+CNMI=2,2,0,0,0

OK
</code></pre>

<p>and when received sms, output like this.</p>

<pre><code>+CMT: "+79XXXXXXXXX","1","15/09/23,01:34:03+24"
Test
</code></pre>

<p>But when I read message, output only before <code>&lt;CR&gt;&lt;LF&gt;</code>
I don't see text of message.</p>

<pre><code>AT+CMGR=1

+CMGR: "REC READ","+79XXXXXXXXX","1","15/09/23,00:34:17+24"

AT+CMGL="ALL"

+CMGL: 1,"REC READ","+79XXXXXXXXX","1","15/09/23,00:34:17+24"
+CMGL: 2,"REC READ","+79XXXXXXXXX","1","15/09/23,01:34:03+24"
</code></pre>

<p>I use <a href="https://gist.github.com/YokiToki/9d5e730c0c196ebaf3cf" rel="nofollow">following</a>  (via SoftwareSerial) code for test this.
<code>SMSGSM.GetSMS</code> and <code>SMSGSM.GetAuthorizedSMS</code> of <a href="https://github.com/MarcoMartines/GSM-GPRS-GPS-Shield" rel="nofollow">GSM GPRS GPS Shield Library</a> receive only phone number without sms text.</p>

<p>I use this shield:
<img src="https://cloud.githubusercontent.com/assets/1845813/10030856/50090b88-6193-11e5-916b-5f58ac58e6d8.JPG" alt="_57"></p>

<pre><code>AT+GSV

SIMCOM_Ltd
SIMCOM_SIM900
Revision:1137B05SIM900M64_ST_ENHAN
</code></pre>
 11763: <p>This is most likely a case of overrun SoftwareSerial buffer. You are reading too slowly from the modem, especially with the <code>Serial.print()</code>s in your code. You should look for SoftwareSerial.h in <code>C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial</code> if you're using Win 8 and above. Or just search your PC for it. Look for this line:</p>

<pre><code>    #define _SS_MAX_RX_BUFF 64
</code></pre>

<p>Change 64 to 256 and save. If it solves your problem, try reducing 256 to 128 to see if it still works. The greater the size of the buffer, the lesser the amount of memory available to the rest of your program. </p>

<p>You could also try this, to interact with the module:</p>

<pre><code>#include &lt;SoftwareSerial.h&gt;

SoftwareSerial SIM900(7,8);

void setup() {
  Serial.begin(19200);
  SIM900.begin(19200);
}

void loop() {
  // put your main code here, to run repeatedly:
  while (Serial.available() &gt; 0){
    SIM900.write(Serial.read());
  }
  while (SIM900.available() &gt; 0){
    Serial.write(SIM900.read());
  }
}
</code></pre>

<p>It does the same thing as your code and doesn't require adjusting buffer size, though I still recommend you make the change if you will use other sketches.</p>
