Seeedstudio SIM900 Arduino GPRS Shield V2.0 не отвечает на терминал

У меня есть Arduino Leonardo и Seeedstudio 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 + +1XXXXXXXXXX», код для набора номеров, и это сработало. Проблема в том, что я не могу получить ответ от серийного номера модуля gprs, после этого он просто пуст. Я читал, что ответ на последовательный терминал должен быть: «ОК». Мои вопросы:

а. Я что-то пропустил? Я хочу получить ответ, написанный на терминале.

б. Я хочу сделать http-запрос, есть ли у кого-нибудь опыт, как это сделать? Я имею в виду, что этот gprs открывает веб-сайт blablablabla.com/cs/blabla.php?name=blabla

спасибо перед


person wrez    schedule 05.02.2014    source источник
comment
Когда вы говорите, что ATD + +1XXXXXX сработало, что вы имеете в виду под сработало? Какой результат вы увидели?   -  person user1725145    schedule 06.02.2014
comment
@SList я не видел никакого ответа, я знал, что это сработало, потому что мне позвонили из Arduino Shield   -  person wrez    schedule 06.02.2014


Ответы (3)


Возможно, ваша SIM900 находится в режиме «Коды результатов подавлены». В этом режиме он просто не отправляет коды результатов, такие как «ОК».

Попробуйте отправить ему команду «ATQ0», чтобы он передал коды результатов. (Посмотрите на команду ATQ в Руководстве по командам AT).

person Lior Hass    schedule 06.02.2014
comment
это не работает. Я попытался отправить ATQ0 и ничего не получил, тот же результат. - person wrez; 14.02.2014

Я ни в коем случае не эксперт в этих вещах, но... Я нигде не вижу строки, которая печатала бы или отображала данные.

Пример:

Предполагая, что вы установили что-то вроде переменной: int inByte=0 в начале

как ваши buffer[count++] или BufferArray(), с которыми я немного не знаком

то вы можете получить данные, используя

Serial.println(inByte); 

or

GPRS.println(inByte);

который будет отображать эту информацию в окне вашего COM-порта

Так....? что-то типа

Serial.println(buffer[count++]);

or

GPRS.println(buffer[count++]); 

Оба из которых будут скомпилированы BTW

person user3420877    schedule 14.03.2014

Примеры с 7 пин с Леонардо не работают. С 10-контактным (необходимо подключить провод вместо перемычки) работает нормально.

person user4781369    schedule 13.04.2015