何が困るのか
milk-v duoの何が問題かというと、キーボードもディスプレイもないこと。SSHでコマンドは叩けるけど、それではスマホ、PC、Web連携みたいなシステムは作れませんよね。
一番簡単なネットワークインターフェイスはREST APIです。これだとJavaScriptなどからもアクセスできるので非常に使い勝手が良いです。
ただまあmilk-v duoの場合はメモリが64MBしかないこともあり、Apacheを動かすのは中々厳しいわけで。巨大なライブラリをリンクするのは極力避けたいです。
結論
以下のライブラリを使えば簡単です。
ヘッダファイルのみでサイズもすごい小さいのがポイントです。
- cpp-httplib
- https://github.com/yhirose/cpp-httplib
- C++向けHTTPサーバ
- ヘッダファイルひとつだけなので組み込みが容易
- nlohmann-json
- https://github.com/nlohmann/json
- C++向けJSONライブラリ
- ヘッダファイルひとつだけなので組み込みが容易
サンプルコード
milk-v duoでアプリケーションを開発する方法は下記を参照してください。GitHubのサンプルコードをcloneして改造するのが一番簡単だと思います。
以下がJSONを返すREST APIの例です。簡単ですね。
#include <jsonserv.hxx>
#include <nlohmann/json.hpp>
int main(const char** argv, int argc) {
httplib::Server svr;
svr.Get("/hello", [&](const httplib::Request& req, httplib::Response& res) {
nlohmann::json js = {{"result", true}, {"msg", "hello"}};
res.set_content(js.dump(), "application/json");
});
svr.listen("0.0.0.0", 80);
return 0;
}
ブラウザで「http://192.168.42.1/hello」(milk-v duoをPCにUSB接続した状態の場合)にアクセスすればJSONが表示されるはずです。