DSP32-CAMは購入後ArduinoIDEの設定をするだけですぐに使える非常に便利な商品です。
ただ、その反面ブラックボックスな部分が多くなってしまい、
カスタマイズが難しい。
「動作させる」⇒「カスタマイズする」というステップUpに対して
技術的に求められるレベルが急に上がると申しましょうか、
ちょっとしたことも難しく感じます。
ESP32-CAMのHTTPD関数のどこを修正すればブラウザの表示が変わりますか?
やりたいことを具体的に言うと添付図の
ストリーミングボタンを一番上に配置させたいです。
該当箇所と推測した箇所を抜粋しました。
static esp_err_t cmd_handler(httpd_req_t *req){ char* buf; size_t buf_len; char variable[32] = {0,}; char value[32] = {0,}; buf_len = httpd_req_get_url_query_len(req) + 1; if (buf_len > 1) { buf = (char*)malloc(buf_len); if(!buf){ httpd_resp_send_500(req); return ESP_FAIL; } if (httpd_req_get_url_query_str(req, buf, buf_len) == ESP_OK) { if (httpd_query_key_value(buf, "var", variable, sizeof(variable)) == ESP_OK && httpd_query_key_value(buf, "val", value, sizeof(value)) == ESP_OK) { } else { free(buf); httpd_resp_send_404(req); return ESP_FAIL; } } else { free(buf); httpd_resp_send_404(req); return ESP_FAIL; } free(buf); } else { httpd_resp_send_404(req); return ESP_FAIL; } int val = atoi(value); sensor_t * s = esp_camera_sensor_get(); int res = 0; if(!strcmp(variable, "framesize")) { if(s->pixformat == PIXFORMAT_JPEG) res = s->set_framesize(s, (framesize_t)val); } else if(!strcmp(variable, "quality")) res = s->set_quality(s, val); else if(!strcmp(variable, "contrast")) res = s->set_contrast(s, val); else if(!strcmp(variable, "brightness")) res = s->set_brightness(s, val); else if(!strcmp(variable, "saturation")) res = s->set_saturation(s, val); else if(!strcmp(variable, "gainceiling")) res = s->set_gainceiling(s, (gainceiling_t)val); else if(!strcmp(variable, "colorbar")) res = s->set_colorbar(s, val); else if(!strcmp(variable, "awb")) res = s->set_whitebal(s, val); else if(!strcmp(variable, "agc")) res = s->set_gain_ctrl(s, val); else if(!strcmp(variable, "aec")) res = s->set_exposure_ctrl(s, val); else if(!strcmp(variable, "hmirror")) res = s->set_hmirror(s, val); else if(!strcmp(variable, "vflip")) res = s->set_vflip(s, val); else if(!strcmp(variable, "awb_gain")) res = s->set_awb_gain(s, val); else if(!strcmp(variable, "agc_gain")) res = s->set_agc_gain(s, val); else if(!strcmp(variable, "aec_value")) res = s->set_aec_value(s, val); else if(!strcmp(variable, "aec2")) res = s->set_aec2(s, val); else if(!strcmp(variable, "dcw")) res = s->set_dcw(s, val); else if(!strcmp(variable, "bpc")) res = s->set_bpc(s, val); else if(!strcmp(variable, "wpc")) res = s->set_wpc(s, val); else if(!strcmp(variable, "raw_gma")) res = s->set_raw_gma(s, val); else if(!strcmp(variable, "lenc")) res = s->set_lenc(s, val); else if(!strcmp(variable, "special_effect")) res = s->set_special_effect(s, val); else if(!strcmp(variable, "wb_mode")) res = s->set_wb_mode(s, val); else if(!strcmp(variable, "ae_level")) res = s->set_ae_level(s, val); else if(!strcmp(variable, "face_detect")) { detection_enabled = val; if(!detection_enabled) { recognition_enabled = 0; } } else if(!strcmp(variable, "face_enroll")) is_enrolling = val; else if(!strcmp(variable, "face_recognize")) { recognition_enabled = val; if(recognition_enabled){ detection_enabled = val; } } else { res = -1; } if(res){ return httpd_resp_send_500(req); } httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); return httpd_resp_send(req, NULL, 0); }
> ESP32-CAMのHTTPD関数のどこを修正すればブラウザの表示が変わりますか?
HTTPD関数(どれ?)のソースを見ていませんが、その状況ですとご自分で対応するのは難しいのでは、と思うのが正直なところです。1行や2行修正して終わりではないはずです。ご質問としては丸投げに近い印象を受けます。C言語必須ですが、該当のコードを挙げ、もう少し詳細に質問を述べると回答をいただけるかもしれません。
文字数制限を考えて投稿しました。
おそらくapp_httpd.cppのどこかを編集すればいいような気がしますが、
どこをどう変えればいいかまではわかりませんでした。
ちょっと勘違いがあったので全面改稿。
どこかで公開されているソースならそれを示して下さい。あなたの知っていることは回答者も当然に知っている...わけではないです。
thkanaさん>
何かいい方法ありますでしょうか?
もし、Arduino IDE用ESP32ライブラリのExampleの一部ということなら、掲載するにあたっては
https://github.com/espressif/arduino-esp32/blob/master/LICENSE.md
が適用されると思います。適宜よろしく。
(最低でも、他人が作ったプログラム(片)を引用するのに出典を示さない、というのはないと思います)