Junkie
Member
Привет. Хочу слать на сервер апача гет запрос и вычитывать данные в строку, потом эту строку я разбираю, вытаскивая нужные мне куски текста.
Вобщем то вот сами две простых функции. в getsend я отсылаю команды и вырезаю ответы, в set соответственно шлю команды.
Проблема в том что страница вычитывается не полностью, а обрывается не дойдя до конца, так же пробовал выводить mySerial.available() чтобы посмотреть сколько знаков доступно, по началу их 500 потом уменьшается до 400 и потом резко 150 и дальше вниз, это когда я их убавлял по одному с помощью Serial.read().
Сам код страницы незамысловатый
просто выводит в тегах пользователя и время, еще для теста 900 случайных символов.
Так вот если я просто напишу в ардуине
соеденение напрямую ком порта с софтварным, то с помощью ESplorer можно хоть 5000 символов вычитать, и все приходит.
Как сделать чтобы ардуина не спотыкалась при чтении?
Код:
void getsend() {
String ans = "";
String send_text = "GET /index.php?time HTTP/1.0\n\n";
ans = set("AT+CIPMUX=1\nAT+CIPSTART=0,\"TCP\",\"192.168.0.104\",80");
ans = set("AT+CIPSEND=0,"+String(send_text.length(),DEC));
ans = set(send_text);
Serial.println(ans);
String ans_time = ans.substring(ans.indexOf("<time>")+6,ans.indexOf("</time>"));
String ans_user = ans.substring(ans.indexOf("<user>")+6,ans.indexOf("</user>"));
Serial.println(ans_time);
Serial.println(ans_user);
lcd.setCursor(0,0); lcd.print(ans_time);
delay(5000);
}
String set(String cmd){
String inData = "";
mySerial.println(cmd);
while ( mySerial.available() ) {
inData = mySerial.readString();
}
return inData;
}
Проблема в том что страница вычитывается не полностью, а обрывается не дойдя до конца, так же пробовал выводить mySerial.available() чтобы посмотреть сколько знаков доступно, по началу их 500 потом уменьшается до 400 и потом резко 150 и дальше вниз, это когда я их убавлял по одному с помощью Serial.read().
Сам код страницы незамысловатый
PHP:
echo '<time>'.$result1[0]['time'].'</time>'.PHP_EOL;
echo '<user>'.encode_cyr($result2[0]['user']).'</user>'.PHP_EOL;
echo '<trash>'.PHP_EOL; for($i=1;$i<901;$i++) { echo chr(65+floor($i/100)); if(($i%50)==0) echo " ".str_pad($i,4,"0",STR_PAD_LEFT)." ".PHP_EOL; } echo '</trash>';
Так вот если я просто напишу в ардуине
Код:
if (mySerial.available()) { Serial.write(mySerial.read()); } if (Serial.available()) { mySerial.write(Serial.read()); }
Как сделать чтобы ардуина не спотыкалась при чтении?