AK-030ライブラリを使う場合は、ヘッダファイル AK-030.h
をソースプログラムでインクルードしてください。
#include "AK-030.h"
下記のように new AK030()
でAK030オブジェクトを生成してから、begin()
関数を使ってAPN情報を設定してください。
#include "AK-030.h"
AK030 *ak030 = new AK030(); // AK030オブジェクトの生成
void setup(){
Serial.begin(115200); // デバッグ表示用
// 利用するキャリア(SIMカード)の接続情報(APN/USER/PASSWD/PPPAUTH)を指定
ak030->begin("soracom.io","sora","sora","PAP");
}
以下の例ではわかりやすさを優先し、エラー処理などを一部省略しています。
より詳細なコードは、サンプルプログラムの tcp_example を参照してください。
void loop(){
// LTE網に接続する
if (!ak030->connected()) { // 既に接続しているか確認
Serial.println("connecting to LTE network...");
ak030->connect(); // 接続する
if (!ak030->ok()) {
Serial.println("cannot connect LTE network");
return;
}
Serial.println("...connected");
}
// example.comのIPアドレスを取得
const char *ipaddr = ak030->dnsLookup("example.com");
if (ak030->ng()) { // ここは !ak030->ok() としてもよい
Serial.println("dns lookup failed");
return;
}
Serial.printf("=> %s\n", ipaddr);
// TCPソケットを開く
Serial.printf("open tcp: ipaddr=%s, port=%d\n", ipaddr, 80);
ak030->openTcp(ipaddr, 80);
if (ak030->ng()) {
Serial.printf("cannot open tcp\n");
return;
} else {
Serial.println("...opened");
}
// HTTPリクエストを送信する
const char req[] =
"GET / HTTP/1.1\r\n"
"Host: example.com\r\n"
"\r\n";
ak030->send(req,strlen(req)); // TCP送信
// HTTPレスポンスを受信する
const char data[3000];
ak030->waitEvent(30); // 最大で30秒間、受信イベントが来るの待つ
if (ak030->eventDataReceived()) {
int n;
ak030->receive(data, sizeof(data), &n); // TCP受信
Serial.printf("received %d bytes\n", n);
Serial.println("===== received data begin =====");
Serial.println(data);
Serial.println("===== received data end =======");
}
ak030->close(); // TCPソケットを閉じる
delay(1000*30); // 30秒間ウェイトする
}
現在のバージョンでは、複数の TCP および UDP ソケットを同時に使うことはできません。