1

そこで、arduino + sim900 gprsサーバーを作成しようとしましたが、しばらくするとサーバーがhttpリクエストへの応答を停止し、ステータスはまだ「リッスン」のままですが、新しいリクエストを「検出」しません。接続を再起動すると問題が解決し、

以下は、サーバーからの at コマンドと応答です。

AT+CREG?

+CREG: 0,1
AT+CSCLK=0

OK
AT+CIPMUX=1

OK
AT+CIPMODE=0

+CME ERROR: 3

AT+IFC=2,2

OK
AT+CGATT=1

OK
AT+CIPRXGET=1

OK
AT+CIPCSGP=1,"publicip.net.il","",""

OK
AT+CSTT

OK
AT+CIICR

OK
AT+CIFSR

2.
AT+CSQ

+CSQ: 22,0

OK
AT+CIPSERVER=1,80

OK

SERVER OK


0, REMOTE IP
AT+CIPRXGET=2,0,1024
: 192.163.218.62

+CIPRXGET:1,0

+CIPRXGET:2,0,53,0
GET /get HTTP/1.1
Host: 2.55.73.164
Accept: */*
SEND DATA
SEND_DATA FUNCTION::
AT+CIPSEND=0,221

>
1;1000;2000;0;0;1;2;0;0;0;1;1000;2000;0;0;1;2;0;0;0;1;0;10;0;0;1;2;0;0;0;1;0;10;0;0;1;2;0;0;0;1;0;10;1;0;1;2;0;0;0;1;0;10;1;0;1;2;0;0;0;1;0;10;1;0;1;2;0;0;0;1;0;10;0;0;1;2;0;0;0;0;1;941;0;1003166680;0;0;51;52;20;31;5;2013

0, SEND OK
AT+CIPCLOSE=0,0

0, CLOSE OK

どうすればこれを修正できますか? それは私を狂わせる

いくつかの試行の後、複数のリクエストを送信するとこの問題が発生することが多いことに気付きましたが、この CIPMUX は 1 であるため、最大 10 個の複数接続があると想定されます..

4

1 に答える 1

0

解決策を見つけましたが、それがすべての人に役立つかどうかはわかりません。AT+CIPCLOSE を実行した後、バッファからテキストを取得するために改行を送信する必要があることがわかりました。例えば:

SIM900.println((char)26);
SIM900.println("");
SIM900.println("AT+CIPCLOSE");
SIM900.println("");

また、注意すべきもう1つのことは、バッファをできるだけ速く読み取る必要があることです。そうしないと、バッファがオーバーフローし、応答の一部が失われます

于 2015-11-25T02:08:08.980 に答える