collapse

* Posts Recentes

Rede de comboios elétricos totalmente autónomos 10 ton em Rust em realtime. por blabla
[18 de Setembro de 2022, 18:44]


NiMH por 18650 por almamater
[18 de Setembro de 2022, 17:21]


How We Get Down to 0.2nm CPUs and GPUs - TechTechPotato por blabla
[18 de Setembro de 2022, 15:38]


Nova secção de Raspberry Pi Bare Metal em C e em Rust e Systems Programming por blabla
[04 de Setembro de 2022, 08:55]


The code for AGI will be simple - John Carmack and Lex Fridman por blabla
[29 de Agosto de 2022, 07:36]


Wavelets: a mathematical microscope por blabla
[28 de Agosto de 2022, 20:50]


Bom livro - Dive Into Systems por blabla
[28 de Agosto de 2022, 12:19]


graus negativos inclinação por josecarlos
[28 de Agosto de 2022, 11:31]


Super obsolescência super programada? por SerraCabo
[06 de Agosto de 2022, 11:36]


Motor de aspirador por dropes
[02 de Agosto de 2022, 22:18]

Autor Tópico: Exemplo de comandos AT para GM862  (Lida 1610 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline SJD22

  • Mini Robot
  • *
  • Mensagens: 660
Exemplo de comandos AT para GM862
« em: 11 de Maio de 2011, 21:54 »
Boa noite pessoal.

Preciso de enviar um conjunto de comandos AT para o meu modulo GM862. Apos alguns testes cheguei a um codigo que nao me parece mal, mas queria ouvir opinioes.

O codigo em baixo representa o comando AT#GPRS=1 (permite ligar à Internet e obter um IP) mas para os outros comandos o pensamento é identico.

Gostaria de saber a vossa opinião sobre o modo como este codigo está feito. Ha melhores maneiras? Diga-se de passagem que isto dos comandos AT é um bocado "parvo". Eu tenho de estar sempre a ler o que está no buffer de entrada e "adivinhar" a resposta. Se o modulo mandasse em primeiro lugar o total de caracteres que ia enviar de seguida, era muito mais facil... :)

Ca vai o codigo:

Código: [Seleccione]
String pergunta = "AT#GPRS=1", resposta = "", estado = "", valor = "";

Serial.println("PER: " + pergunta);

Serial1.print(pergunta + "\r");
delay(100);
unsigned long tempoInicial = millis();
while(true) {
if(Serial1.available() > 0) {
resposta += byte(Serial1.read());
}
if(resposta.endsWith("OK\r\n")) {
estado = "OK";
valor = resposta.replace(pergunta, "").replace("#GPRS:", "").replace("+IP:", "").replace("OK", "").replace("\n", "").replace("\r", "").replace(" ", "");
break;
}
if(resposta.endsWith("+CME ERROR: 555\r\n")) {
estado = "ERROR";
valor = "555";
break;
}
if((millis() - tempoInicial) > 45000) {
estado = "TIMEOUT";
valor = "-";
break;
}
delay(10);
}

Serial.println("RES: " + resposta);
Serial.println("EST: " + estado);
Serial.println("VAL: " + valor);

delay(100);

Tks

Cumps.