Arduino ja GPRS-modeemi

Mulla on Dealextremesta ostettu Benq M32 GPRS-modeemi joka on kytketty arduinoon tällä ohjeella.

Rauta toimii tällä hetkellä ongelmitt, mutta koodin kanssa seuraaavanlainen ongelma:
Käynnistyksessä modeemin sarjaliikenne tarvitsee “herätellä” AT komennolla tyyliin

m32_serial.println("AT");

Ja vastauksena saadaan OK ja yksi tyhjä rivi, jos komento meni perille ja linja pelaa.

Homma toimii hyvin, jos tietokone-arduino välillä testaa seuraavalla koodilla:

#include <SoftwareSerial.h>

SoftwareSerial m32_serial(2, 3);

String readString;

void setup()
{
  // initialize serial:
  Serial.begin(9600);
  m32_serial.begin(9600);
  while (true)
  {
    //m32_serial.println("AT");
    if (Serial.available() > 0)
    {
      while (Serial.available() > 0)
      {
      char c = Serial.read();
      readString += c;
      }
    }
//    Serial.println(readString.length()); //debug tulostus
//    readString.trim();
//    Serial.println(readString.length());//debug tulostus
//    Serial.println(readString);//debug tulostus
    delay(1000);
    if (readString == "OK")
    {
      Serial.println("Toimii");//debug tulostus
      delay(1000);
      readString="";
      break;
    }
    readString="";
  }
  Serial.println("Pois loopista");//debug tulostus
  delay(1000);
}

void loop() {

}

Mutta ei arduino modeemi välillä:

#include <SoftwareSerial.h>

SoftwareSerial m32_serial(2, 3);

String readString;

void setup()
{
  // initialize serial:
  Serial.begin(9600);
  m32_serial.begin(9600);
  while (true)
  {
    m32_serial.println("AT");
    if (m32_serial.available() > 0)
    {
      while (m32_serial.available() > 0)
      {
      char c = m32_serial.read();
      readString += c;
      }
    }
    Serial.println(readString.length()); //debug tulostus
    readString.trim();//debug tulostus
    Serial.println(readString.length());//debug tulostus
    Serial.println(readString);//debug tulostus
    delay(1000);
    if (readString == "OK")
    {
      Serial.println("Toimii");//debug tulostus
      delay(1000);
      readString="";
      break;
    }
    readString="";
  }
  Serial.println("Pois loopista");//debug tulostus
  delay(1000);
}

void loop() {

}

Modeemi palauttaa 9 merkkiä, josta whitespacet trimmaamalla merkit vähenee 7 merkkiin.
Tietokonella kun lähettää OK käskyn, niin merkkejä on se 2 mitä pitääkin olla.

Mitä hittoa noi 5 ylimääräistä merkkiä on mitkä ei tulostu mihinkään, mutta tallentuvat muuttujaaan?!

Höh! :astonished: :astonished:
Homma sitten ratkes ihan yksinkertaisesti lisäämällä ennen tuota while looppia, ao. maagisen rivin:

m32_serial.println("ATE0");

:laughing: