SIM800l, SMS Liste

Hallo,

bisher war ich nur Stiller Leser, jetzt habe ich “leider” zunächst einmal selber eine Frage die ich so nicht beantworten kann.

Ich freue mich auf eure Hilfe.

Ich nutze das SIM800l, wenn ich im setup das AT Kommando für die SMS Liste, dann erhalte ich alles korrekt auf der Konsole. Sende ich den Befehl aber über die Konsole, dann erhalte ich immer nur “EINEN” abgeschnittenen Eintrag. Kennt das jemand oder weiß, was das Problem ist.

Ich freue mich!

Gruß
Robert

slsb02:
....
Ich nutze das SIM800l, wenn ich im setup das AT Kommando für die SMS Liste, dann erhalte ich alles korrekt auf der Konsole. Sende ich den Befehl aber über die Konsole, dann erhalte ich immer nur "EINEN" abgeschnittenen Eintrag. Kennt das jemand oder weiß, was das Problem ist.

Dann zeige uns den doch mal.

Danke erst einmal für die schnelle Antwort!

Folgende Ausgabe auf der Konsole:

+CMGL: 1,“REC READ”,"+49177xxxxxxx","",“18/02/04,12:21:06+04”

und das war es dann… Es sind eigentlich auch SMS vorhanden.

Ahh, ok.
Ich hatte übersehen, wenn die Anweisung im Setup steht, geht es.
Dann kann es nicht am Puffer liegen, das war meine Vermutung, trifft hier aber nicht zu.
Wie ist das SIM am Arduino angeschlossen ?

Angeschlossen, wie folgt:

SIM_RXD → D8
SIM_TXD → D9

5V → Netzteil
GND → Netzteil
GND → Arduino GND

VDD → n.c.
reset → n.c

Ansontent nachfolgend auch noch der Code.

#include <SoftwareSerial.h>    

#define SIM800_TX_PIN 8
#define SIM800_RX_PIN 9
#define SIM800_RST_PIN 2

SoftwareSerial serialSIM800(SIM800_RX_PIN,SIM800_TX_PIN);

String s;

void setup() {
   Serial.begin(9600);
   while(!Serial);
   //https://arduino.stackexchange.com/questions/36039/sim800l-change-default-baud-rate
   serialSIM800.begin(57600); //=max
   //while(!serialSIM800);
   
   delay(10000);
   //at+cmee=2 (it activate debug mode)

   //delay(1000)
   serialSIM800.println("AT+CPIN=XXXX");
   //serialSIM800.println( SIM_PIN_CODE );
   delay(5000);
   serialSIM800.println("AT+CMGF=1");
   delay(1000);
   serialSIM800.println("AT+CMGL=\"ALL\"");
   //serialSIM800.println("AT+CFUN?");
   //delay(1000);
   //AT+CMEE=2 //debug-mode
   //AT+COPS=4,1,"D1"
   //AT+COPS=4,2,26201


   Serial.println("Setup complete");
}


void handle_command(String cmd)
{
  if (cmd.startsWith("AT"))
  {//SIM-Commands
    Serial.print("AT-Command:");
    Serial.println(cmd);
    serialSIM800.println(cmd.c_str());
    //serialSIM800.write(cmd.c_str());
    delay(1000);  // Delay of 1000 milli seconds or 1 second
  }//else

//else
//    if (cmd == "RESETSIM"){      // reset Sim-module
//      digitalWrite(SIM800_RST_PIN,HIGH);
//      delay(500);
//      digitalWrite(SIM800_RST_PIN,LOW);
//    }
  }

void loop() {
//  keepalive();

  //serielle Daten vom RPI
  if (Serial.available() > 0) {
    char incoming = Serial.read();
    if ((incoming != '\n') && (incoming != '\r'))
      s+=incoming;
    else //command complete on linebreak
    {
      handle_command(s);
      //Serial.print("Empfangen: ");
      //Serial.println(s);
      s="";
    }
  }
  if(serialSIM800.available()>0){
    Serial.print("SIM800: ");
    while (serialSIM800.available()>0)
    {
      char i=serialSIM800.read();
      Serial.print(i);
      //Serial.println(serialSIM800.read());
    }
    Serial.println("");
  }
    
//}
}

Mir ist gerade noch etwas "lustiges" aufgefallen. Wenn ich an den Befehl über die Konsole Leerzeichen anhänge, wird die Rückantwort um die Leerzeichen kürzer!?

Jetzt bin ich komplett verwirrt...