• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SDから読み込んだ文字列だとAWS通信でエラー)

SDから読み込んだ文字列だとAWS通信でエラー

このQ&Aのポイント
  • 現在、ESP-WROOM-32でAWSサーバーへアクセスするプログラムをやってます。
  • ESP-WROOM-32に接続したSDカードリーダーからconfigテキストファイルを読み込んで、そのファイルに書かれたAWSサーバー名やポート番号に応じて接続処理を行いたいと思っています。
  • しかし、SDから読み込んだ文字列ではAWSサーバーとの通信でエラーが発生しています。文字列の取得方法に問題がある可能性があります。どのように改善すれば良いでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

deviceIDのスコープはその直前にあるif文のブロック内です。 if文のブロックを抜けると、その内容は不定になります。 server = (const char*)deviceID.c_str(); はdeviceID内部のデータのポインタを代入しているだけなので、deviceID自体がスコープから外れると内容は不定になります。

techhouse
質問者

お礼

回答頂きありがとうございます。 解決しました。 シリアルモニタで、Serial.printf("aws server: %s \n", server);の実行で望み通りの文字列が表示されていたのに、AWSの通信がエラーしていたのですごいガッカリしていましたが、このコードを関数内でやっているのは問題でしたね。 このコードを関数外のグローバル領域のルーチンに移したら全然違うデータが出てきましたので問題に気づけました。 このマイクロSDからデータを読み込むプログラムはほとんどコピペしていたため、このサーバーの文字列だけでなく、他のプログラムでも同様の問題が起きていることがわかり、それを修正することで、マイクロSDデータでのAWSサーバへの通信ができることを確認できました。 助かりました。

techhouse
質問者

補足

現在のプログラムの状況はこんな感じです。 https://drive.google.com/file/d/1wPC6AJQ8gaavPQDz85-RZw4_m0FssPg9/view?usp=sharing ちょっとグーグルドライブの共有機能を試してみます。

関連するQ&A