私の最終目標は、C ++プログラムからsim800cを使用して、Raspberry pi 3に保存されているいくつかの単純なデータを外部サーバー/ウェブサイトに送信しようとすることです. これを行う最も簡単な方法は、SIM/モデムに「AT コマンド」を発行することだと思いますが、これを行うのに苦労しています。ATコマンドを実際に発行する方法や、それらが機能しているかどうかを確認する方法がわかりません。テストの目的で、電話番号にテキスト メッセージを送信するコードをいくつか書きました。これが機能するようになれば、サーバーと通信するための AT コマンドを理解するのはかなり簡単です。
以下は、私がかなり正しいと確信しているすべてをどのように配線したかのイメージです。
https://i.imgur.com/zysmNXE.jpg
以下は、さまざまなガイドを使用して作成した基本的な c++ コードです。コンパイルしてターミナルで実行しますが、AT コマンドから応答がなく、さらに重要なことに、実際には実行されていないことがわかります。偽の番号を個人の番号に変更してみましたが、違いはありませんでした。
#include <stdio.h>
#include <string.h>
#include <wiringPi.h>
#include <wiringSerial.h>
int main ()
{
int connection;
printf("Opening connection \n");
connection = serialOpen("/dev/ttyAMA0", 9600);
delay(1000);
printf("Connection: %d\n", connection);
printf("\n");
//Set gsm to text mode
serialPuts(connection,"AT+CMGF \r\n");
delay(1000);
//Number that the message should be sent to
serialPuts(connection,"AT+CMGS=\"12345678900\"\r\n");
delay(1000);
//The message
serialPuts(connection,"Hello World");
delay(1000);
//Print ctrl+x
serialPuts(connection,"\x1A");
delay(1000);
printf("Done \n");
return 0 ;
}
私が知る限り、それが機能しない理由は 3 つ考えられます。
- pi の構成/設定の問題の可能性
- 配線を間違えた
- シム/モジュールが機能していません
問題の原因をテスト/発見する方法がわかりません。「serialPuts」を実行した後に AT コマンドの応答を出力するコードを取得できれば、何が起こっているのかを理解するのに役立つかもしれませんが、それを行うことはあまりうまくいきませんでした。または、コマンドが機能していないように見える理由を誰かが知っているか、それらをデバッグ/テストする方法をいくつか提供してくれれば、それは素晴らしいことです。