Seeedstudio SIM900 Arduino GPRS Shield V2.0 не отвечает на ответ терминала
У меня есть Arduino Leonardo и http://www.seeedstudio.com/wiki/GPRS_Shield_V2.0. Оба они работают без проблем. После урока по основной ссылке на щит gprs я успешно скомпилировал следующий код для arduino:
//Serial Relay - Arduino will patch a
//serial link between the computer and the GPRS Shield
//at 19200 bps 8-N-1
//Computer is connected to Hardware UART
//GPRS Shield is connected to the Software UART
#include <SoftwareSerial.h>
SoftwareSerial GPRS(7, 8);
unsigned char buffer[64]; // buffer array for data recieve over serial port
int count=0; // counter for buffer array
void setup()
{
GPRS.begin(19200); // the GPRS baud rate
Serial.begin(19200); // the Serial port of Arduino baud rate.
}
void loop()
{
if (GPRS.available()) // if date is comming from softwareserial port ==> data is comming from gprs shield
{
while(GPRS.available()) // reading data into char array
{
buffer[count++]=GPRS.read(); // writing data into array
if(count == 64)break;
}
Serial.write(buffer,count); // if no data transmission ends, write buffer to hardware serial port
clearBufferArray(); // call clearBufferArray function to clear the storaged data from the array
count = 0; // set counter of while loop to zero
}
if (Serial.available()) // if data is available on hardwareserial port ==> data is comming from PC or notebook
GPRS.write(Serial.read()); // write it to the GPRS shield
}
void clearBufferArray() // function to clear buffer array
{
for (int i=0; i<count;i++)
{ buffer[i]=NULL;} // clear all index of array with command NULL
}
Приведенный выше код принимает AT-команду из последовательного интерфейса в качестве входного и передает ее в модуль gprs. Итак, я мог напечатать что-то вроде: "ATD + +1XXXXXXXX", какой код для набора номеров, и это сработало. Проблема в том, что я не могу получить ответ от серийного модуля gprs, он просто пуст. Я прочитал, что ответ на последовательный терминал должен быть: "ОК". Мои вопросы:
а. Я что-то пропустил? Я хочу получить ответ на терминал.
б. Я хочу сделать http запрос, у кого-то есть опыт, как это сделать? Я имею в виду открытие этого сайта gprs blablablabla.com/cs/blabla.php?name=blabla
спасибо, прежде чем
3 ответа
Примеры с 7 булавками с Леонардо не работают. С 10-контактным (нужно подключить провод вместо перемычки) работает нормально.
Я ни в коем случае не эксперт в этом деле, но... Ни в коем случае я не вижу строки, которая будет печатать или отображать данные.
Пример:
Предполагая, что вы установили что-то вроде переменной: int inByte=0
в начале
как твой buffer[count++]
или же BufferArray()
с которым я немного незнаком
тогда вы можете получить данные с помощью
Serial.println(inByte);
или же
GPRS.println(inByte);
который будет отображать эту информацию в вашем окне COM-порта
Так....? что-то вроде
Serial.println(buffer[count++]);
или же
GPRS.println(buffer[count++]);
Оба из которых будут составлять BTW
Возможно, ваша SIM900 находится в режиме "Подавление кодов результатов". В этом режиме он просто не отправляет коды результатов, такие как "ОК".
Попробуйте отправить ему команду "ATQ0", чтобы заставить ее передавать коды результата. (Посмотрите на команду ATQ в Руководстве по командам AT).