l'unica divverenza che noto è il carattere di "a capo" che viene aggiunto attraverso la println. Quindi dovresti modificare
void SIMCOM900::SimpleWrite(byte *comm, int len)
{
_cell.write(comm, len);
}
in
void SIMCOM900::SimpleWrite(byte *comm, int len)
{
_cell.write(comm, len);
_cell.write('\n', 1); //aggiunge il carattere "a capo"
}
però a questo punto ho paura a cosa possa succedere se in mezzo al comando ci sia un valore che corrisponda all'a-capo.. tutto dipende da come interpreta i dati il chip GSM, bisognerebbe vedere che succede a basso livello (libreria gsm.h) però ora sono a lavoro.