NB-IoT-Shield Programmierung / SoftwareSerial

Hallo,
ich habe mir das NB-IoT-Shield von Dragino gekauft (NB-IoT Shield - Wiki for Dragino Project). Über die Eingabe über den seriellen Monitor funktionieren die "AT+..." Befehle auch und ich habe auch schon bei meinem MQTT Broker nachrichten so empfangen.
Jetzt möchte ich diese Befehle aber in meinem Programmcode ausführen lassen und habe das mit dem SoftwareSerial.write() Befehl versucht. Funktioniert aber leider nicht.
Hat jemand eine Idee, was ich falsch mache.
So sieht das ganze momentan aus. Mit dem Inhalt der write Befehle, hat es durch die manuelle Eingabe funktionert.

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11);

void setup() {
Serial.begin(9600);
while (!Serial) {
}
mySerial.begin(9600);
while(!mySerial){
}
mySerial.write("AT+QMTOPEN=0,"test.mosquitto.org",1883");
Serial.println(mySerial.read());
delay(1000);
mySerial.write("AT+QMTCONN=0,"dragino","smala","ladungsträger"");
Serial.println(mySerial.read());
delay(1000);
mySerial.write("AT+QMTPUBEX=0,0,0,0,"dragino/0001/data","Leerfahrt"");
Serial.println(mySerial.read());
delay(1000);

statt

mySerial.write("....");
mySerial.print("....");

verwenden.

mySerial.print(); kann - so direkt entweder eine hardcodierte Zeichenkette

mySerial.print("Hallo Welt");

oder eine einzelne Variable ausgeben

int myIntegerVar = -1234;
mySerial.print(myIntegerVar);

für zusammengesetzte Sachen - ich meine damit die zu übertragenden Daten haben einen Fix-Text-Anteil und einen variablen Anteil - empfehle ich die Verwendung der library SafeString

der Variablentyp String sorgt bei Anfängern für Programm-Chrashes weil man diverse Sachen beachten muss damit das nicht passiert.
SafeString funktioniert zuverlässig wie der Name schon sagt und bietet relativ viel Komfort beim programmieren.

vgs

SafeString Demo-code der weitere nützliche Sachen enthält.

#define dbg(myFixedText, variableName) \
  Serial.print( F(#myFixedText " "  #variableName"=") ); \
  Serial.println(variableName);
// usage: dbg("1:my fixed text",myVariable);
// myVariable can be any variable or expression that is defined in scope

#define dbgi(myFixedText, variableName,timeInterval) \
  do { \
    static unsigned long intervalStartTime; \
    if ( millis() - intervalStartTime >= timeInterval ){ \
      intervalStartTime = millis(); \
      Serial.print( F(#myFixedText " "  #variableName"=") ); \
      Serial.println(variableName); \
    } \
  } while (false);
// usage: dbgi("2:my fixed text",myVar,myInterval);
// myVar can be any variable or expression that is defined in scope
// myInterval is the time-interval which must pass by before the next
// print is executed


#include <SafeString.h>
createSafeString(myDemo_SS, 32);
createSafeString(mySecondDemo_SS, 32);

unsigned long myCounter;

// if program starts printout the source-code filename etc. to the serial monitor
void PrintFileNameDateTime() {
  Serial.println( F("Code running comes from file ") );
  Serial.println(__FILE__);
  Serial.print( F("  compiled ") );
  Serial.print(__DATE__);
  Serial.print( F(" ") );
  Serial.println(__TIME__);  
}

//useful function for non-blocking timing
boolean TimePeriodIsOver (unsigned long &periodStartTime, unsigned long TimePeriod) {
  unsigned long currentMillis  = millis();  
  if ( currentMillis - periodStartTime >= TimePeriod )
  {
    periodStartTime = currentMillis; // set new expireTime
    return true;                // more time than TimePeriod) has elapsed since last time if-condition was true
  } 
  else return false;            // not expired
}

unsigned long MyTestTimer = 0;                   // variables MUST be of type unsigned long
const byte    OnBoard_LED = 13; // Arduino-Uno Onboard-LED is IO-pin 13

// make onboard-LED blink to show: "program is running"
void BlinkHeartBeatLED(int IO_Pin, int BlinkPeriod) {
  static unsigned long MyBlinkTimer;
  pinMode(IO_Pin, OUTPUT);
  
  if ( TimePeriodIsOver(MyBlinkTimer,BlinkPeriod) ) {
    digitalWrite(IO_Pin,!digitalRead(IO_Pin) ); 
  }
}



void setup() {
  Serial.begin(115200);
  Serial.println( F("Setup-Start") );
  PrintFileNameDateTime();
  myCounter = 0;
  myDemo_SS = "Hello world!";
}


void loop() {
  BlinkHeartBeatLED(OnBoard_LED,500);
  myCounter++;
  
  // loop is running very fast counting up very fast
  // but only once every 1234 milliseconds print 
  if ( TimePeriodIsOver(MyTestTimer,1234) ) {
    mySecondDemo_SS = myDemo_SS;  // assigning a SafeString to another SafeString
    
    mySecondDemo_SS += " ";       // append a SPACE
    mySecondDemo_SS += myCounter; // append integer-number
    Serial.println(mySecondDemo_SS);    
  }  

}

vgs

Vielen Dank für die schnelle Antwort. Hat jetzt mit "mySerial.println("..") funktioniert. Warum auch immer nur mit print nicht..