長さを見つけてAT + CIPSEND = という長さの関数にテキスト全体を送信することで、一部のテキストのパスデータをサーバーに読み込もうとしています。でTCPポートを後で開きます。応答データに追加情報を追加する前に、すべてうまくいきました。 私は文字制限の疑いがありますが、数時間のデバッグを行っても理由が見つかりませんでした。Arduino String concatenation Serial.println()が機能しない
Serial.println()は出力を表示せず、文字列連結はそれほど正常ではありません。問題は、テキストが渡されないため、CIPSENDが機能しないことです。対応するコードセクションとその出力を以下に示します。
void sendHTTPResponse(int connectionId, String content) {
Serial.println("SENDHTTPRESPONSE1: " + content);
// build HTTP response
String httpResponse;
String httpHeader;
// HTTP Header
httpHeader = "HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=UTF-8\r\n";
httpHeader += "Content-Length: ";
httpHeader += content.length();
httpHeader += "\r\n";
httpHeader += "Connection: close\r\n\r\n";
Serial.println("SENDHTTPRESPONSE2: " + httpHeader);
httpResponse = httpHeader + content + " "; // There is a bug in this code: the last character of "content" is not sent, I cheated by adding this extra space
Serial.println("HTTPRESPONSE3: " + httpResponse);
sendCIPData(connectionId, httpResponse);
}
シリアルモニタ出力。 HTTPRESPONSE3は何とか空のようですか?
SENDHTTPRESPONSE1: {"data":[{"id":"100"}]}{"data":[{"id":"100"}]}{"data":[{"id":"100"}]}{"data":[{"id":"100"}]}
SENDHTTPRESPONSE2: HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 92
Connection: close
DATA LENGTH:
======================================================
Executing command: AT+CIPSEND=0,0
HTTP/1.1
CoAT+CIPSEND=0,0
ありがとうございます。
ArduinoのはCではありません!そしてあなたのコードは、このような小型のデバイスには適していません。 Arduinoのようなベアメタルの組み込みデバイスにデスクトッププログラミング技術を適用することは悪い考えです。 – Olaf
あなたは何をお勧めしますか?またはいくつかの参考文献をリンクしてください。 – eden
これは個人指導サイトではありません。しかし、なぜあなたは断片的にテキストを送信しないのですか? – Olaf