есть такой проект в интернете
https://www.rlocman.ru/review/article.html?di=600337это управление поливом , ну или чем угоддно с web страницы. Данные пишутся (считываются) в файлы на php сервер
мне оттуда нужно было взять лишь чтение файл, что и было сделано, но остались вопросы
вот содержимое файла
Цитата:
123456789)
цифры здесь не причем лишь для наглядности, в коде "ищем" скобку, и в зависимости от того куда она загнута управляем.
далее идет код, который это все делает.
Код:
loop(){
///////// чтение файл на сервере ////////////////////
/////////////////////////////////////////////
Serial.print ("Read server \n\r\n");
adress_txt="pomidor.txt";
read_gprs();
for (long i=0; i <= 2000; i++){
delay(1);
read_uart();
if (r!=""){ Serial.print(r);}
if(r=='+'){aa=1;}
if(aa==1)
{
if(r==0x0D){aa=2;}
}
if(aa==2){
[b] if(r=='('){aa=0; Serial.print ("ON motor \n\r\n");}
if(r==')'){aa=0; Serial.print ("OFF motor \n\r\n"); }[/b]
}
}
} //loop
Код:
void read_gprs (void)
{
GSMport.print ("sensor changed to: 0\n\r\n");
delay (100);
GSMport.print ("Send start\n\r\n");
delay (100);
GSMport.print ("setup url\n\r\n");
delay (100);
GSMport.print ("AT+HTTPPARA=");
GSMport.print ('"');
GSMport.print ("URL");
GSMport.print ('"');
GSMport.print (',');
GSMport.print ('"');
GSMport.print (adress_site);
GSMport.print (adress_txt);
GSMport.print ('"');
GSMport.print ("\n\r\n");
delay (1000);
GSMport.print ("GET url\n\r\n");
delay (100);
GSMport.print ("AT+HTTPACTION=0\n\r\n");
delay (5000);
GSMport.print ("AT+HTTPREAD=1,1000\n\r\n");
}
void read_uart (void)
{
if (GSMport.available()) {
// Serial.write(mySerial.read());
r=(GSMport.read());
}
}
Здесь то что в окне сериала
Цитата:
09:36:16.270 ->
09:36:18.164 -> Read server
09:36:18.164 ->
09:36:24.757 -> sensor changed to: 0
Send start
setup url
AT+HTTPPARA="URL","htAT+HTTPREAD=1,1000
09:36:24.827 -> +HTTPREAD: 9
09:36:24.827 -> 23456789)
09:36:24.827 ->
09:36:24.827 ->
09:36:24.827 -> OK
09:36:24.827 ->
09:36:24.827 ->
09:36:24.862 ->
09:36:24.862 ->
09:36:24.862 ->
09:36:24.862 ->
09:36:24.862 ->
09:36:24.862 ->
09:36:24.862 ->
1. поечему в файле 12345678), а прочитано лишь
23456789), и +HTTPREAD: 9 пишет что 9 байт, хотя в файле их 10
2. зачем вот этот цикл for (long i=0; i <= 2000; i++){. Почему 2000?
3. зачем автор отправляет в GSMport эти строки
Код:
GSMport.print ("sensor changed to: 0\n\r\n");
delay (100);
GSMport.print ("Send start\n\r\n");
delay (100);
GSMport.print ("setup url\n\r\n");
delay (100);
Добавлено after 18 minutes 28 seconds:пока писал уже немножко разобрался
получается
GSMport.print ("AT+HTTPREAD=1,1000\n\r\n");
это я читаю с 1 байта - 1000 байт (вот откуда гиганского потребление трафика)
мне нужно читать с 0, допусим всего то может 1 байт, но может быть здесь будет еще какая то служебная информация?
надо пробовать
Мне кажется автор где-то стибзил код, сильно не углубляясь.
Добавлено after 3 hours 12 minutes 35 seconds:тут немножко сам уже разобрался
ловим 0D в ответе
Код:
if(aa==1){
if(r==0x0D){aa=2;}
}
if(aa==2){
if(r=='('){aa=0; Serial.print ("ON motor \n\r\n");}
if(r==')'){aa=0; Serial.print ("OFF motor \n\r\n");
}
а для этого нужно запросить не мнее 100 байт
GSMport.print ("AT+HTTPREAD=0,100\n\r\n");
В чем суть этого и надо ли делать именно так нужно гуглить