Не удалось получить значение из GSM SIM 900A с помощью AT-команды в PHP-скрипте.

gsm

Сейчас я пытаюсь установить соединение между моим GSM-модулем SIM900A и одним из моих тестовых серверов. Пока что соединение вроде бы хорошее, хотя я немного не понимаю, почему мой PHP-файл не извлекает значения. Тем не менее, запрос на вставку работает, хотя в базу данных добавляется пустое значение. Вопрос в том, как правильно его извлечь? Я уже изменил метод в PHP-скрипте на POST, но ни один из них не даёт никаких результатов.

Код Arduino:

void postData()
{
  sim900a.println("AT+HTTPINIT");
  delay(1000);
  printSerialData();

  sim900a.println("AT+HTTPPARA=\"CID\",1");
  delay(1000);
  printSerialData();

  sim900a.println("AT+HTTPPARA=\"URL\",\"test.my/demo/writedata.php\"");
  delay(1000);
  printSerialData();

  sim900a.println("AT+HTTPDATA=12,10000");
  delay(1000);
  printSerialData();

  sim900a.println("strBoton=999");
  delay(1000);
  printSerialData();

  sim900a.println("AT+HTTPACTION=1");
  delay(1000);
  printSerialData();

  sim900a.println("AT+HTTPREAD");
  delay(1000);
  printSerialData();

  sim900a.println("AT+HTTPTERM");
  delay(1000);
  printSerialData();
}

PHP-код:

<?php
$servername = "test.my";
$username = "****";
$password = "****";
$dbname = "test";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$Boton = $_GET["strBoton"];

$sql = "INSERT INTO test VALUES ('$Boton')";   

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>

Выход:

AT+HTTPINIT
OK

AT+HTTPPARA="CID",1
OK

AT+HTTPPARA="URL","test.my/demo/writedata.php"
OK

AT+HTTPDATA=12,10000
DOWNLOAD
OK

AT+HTTPACTION=1
OK

AT+HTTPREAD
OK

AT+HTTPTERM
+CME ERROR: operation not allowed

AT+SAPBR=0,1
OK

, 👍0


1 ответ


Лучший ответ:

0

Не уверен, но в этом руководстве на странице 8 реализован почти такой же шаблон кода, как у вас. Можете сами проверить. Извините, но я не знаю PHP и не могу вам помочь.

Но меня смущает AT+HTTPACTION, поскольку AT+HTTPACTION=0 — это чтение, а AT+HTTPACTION=1 — отправка. Ознакомьтесь с руководством и оптимизируйте свои команды.

Также проверьте этот. Он записывает WAIT=6 после AT+HTTPREAD перед завершением сеанса.

,