自作楽器用音源モジュール作成(3)
Wifi経由でのMIDI受信に使う目的で、ESP-WROOM-02にGETリクエストを投げつけてデータをやり取りできるか検証した。
ESP8266関連のライブラリの使い方は大体Githubを眺めた。
サンプルにはWifiAccessPointという名前のWifiを飛ばしてルートにアクセスされたらテキストを返すサンプルがある。
これにGETリクエスト関連の処理を足すだけでいい。非常に良く出来ている。
String arg(const char* name); // get request argument value by name String arg(int i); // get request argument value by number String argName(int i); // get request argument name by number int args(); // get arguments count bool hasArg(const char* name); // check if argument exists
esp8266-Arduino/ESP8266WebServer.h at master · sandeepmistry/esp8266-Arduino · GitHub
なんでもいいから値を列挙すればいいならargsの回数でarg(int i)を舐めれば良さそうだ。
パラメータ名が必要ならhasArgしてからarg(const char* name)といったところだと思う。
コード
#include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> /* Set these to your desired credentials. */ const char *ssid = "mySSID"; const char *password = "password"; ESP8266WebServer server(80); /* Just a little test message. Go to http://192.168.4.1 in a web browser * connected to this access point to see it. */ void handleRoot() { uint8_t argc = server.args(); for(uint8_t i = 0 ; i < argc ; ++i){ Serial.println(server.arg(i)); } server.send(200, "text/html", "<h1>You are connected</h1>"); } void setup() { delay(1000); Serial.begin(115200); Serial.println(); Serial.print("Configuring access point..."); WiFi.softAP(ssid, password); IPAddress myIP = WiFi.softAPIP(); Serial.print("AP IP address: "); Serial.println(myIP); server.on("/", handleRoot); server.begin(); Serial.println("HTTP server started"); } void loop() { server.handleClient(); }