Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

скетч с конфигуратором в eeprom, сервер и клиент

Тема в разделе "ESP8266 Arduino IDE", создана пользователем Vitaly, 26 июн 2015.

  1. Slacky

    Slacky Читатель

    Сообщения:
    202
    Симпатии:
    10
    @Vitaly спасибо. Просто переделывать под себя пока не стал, решил только посмотреть. Префиксы видел, но не сообразил, как узнать макадрес, а он в имени сети был ... Еще раз - спасибо. Буду разбираться ...
     
  2. TWIkZ23

    TWIkZ23 Новичок

    Сообщения:
    1
    Симпатии:
    0
    Точно помню, что находил этот скрипт, а сейчас он понадобился и нет его. Где можно найти?
     
  3. Vitaly

    Vitaly Читатель

    Сообщения:
    177
    Симпатии:
    16
    TWIkZ23 нравится это.
  4. Slacky

    Slacky Читатель

    Сообщения:
    202
    Симпатии:
    10
    @Vitaly привет.

    Взял для своих нужд процедуру записи и считывания с EEPROM из Вашего скетча. Размер структуры, которая пишется - 284 байта. Падает на процедуре вычисления CRC

    Код (C):
    1. unsigned long crc_update(unsigned long crc, byte data) {
    2.   byte tbl_idx;
    3.   tbl_idx = crc ^ (data >> (0 * 4));
    4.   crc = pgm_read_dword_near(crc_table + (tbl_idx & 0x0f)) ^ (crc >> 4);
    5.   tbl_idx = crc ^ (data >> (1 * 4));
    6.   crc = pgm_read_dword_near(crc_table + (tbl_idx & 0x0f)) ^ (crc >> 4);
    7.   return crc;
    8. }
    Уменьшил структуру до 98. Прекрасно отрабатывает.

    Может чего подскажете?

    P.S. Проверил методом подгона. Если структура читаемых-записываемых данный больше 252 байт - падаем. 253 - уже все, не работает, а 252 - норма ...
     
    Последнее редактирование: 25 май 2017
  5. Vitaly

    Vitaly Читатель

    Сообщения:
    177
    Симпатии:
    16
    byte tbl_idx - переполняется?
     
  6. Slacky

    Slacky Читатель

    Сообщения:
    202
    Симпатии:
    10
    Я не сильно понимаю в сдвигах, XOR, NOR и проч. Да и вообще не сильно понимаю :))

    Как проверить?
     
  7. Vitaly

    Vitaly Читатель

    Сообщения:
    177
    Симпатии:
    16
    а, это же подфункция расчета, тут всё ок с размерностью

    проблема раньше

    Код (Text):
    1. unsigned long crc_byte(byte *b, int len)
    2. {
    3.   unsigned long crc = ~0L;
    4.   uint8_t i;
    5.  
    6.   for (i = 0 ; i < len ; i++)
    7.   {
    8.     crc = crc_update(crc, *b++);
    9.   }
    размер блока int len
    а итератор цикла всего uint8_t i, надо его приводить в соответствие
     
  8. Slacky

    Slacky Читатель

    Сообщения:
    202
    Симпатии:
    10
    О, спасибо, буду проверять ...
     
  9. Slacky

    Slacky Читатель

    Сообщения:
    202
    Симпатии:
    10
    @Vitaly спасибо. Все заработало.
     
  10. mcmega

    mcmega Новичок

    Сообщения:
    93
    Симпатии:
    1
    Скажите, а есть какое то костыль чтоб отключить запись (или уменьшить количество) в последние 3 сектора Flash, чтоб продлить его жизнь?
    А то и впрямь, это как то неправильно и до дырки можно писать туда...
    У меня тестовый модуль походу по этой причине и загнулся (1,5 года на нем все испытываю)
     
  11. Vitaly

    Vitaly Читатель

    Сообщения:
    177
    Симпатии:
    16
    в начале скетча есть WiFi.persistent(false);
    я конечно не 100% уверен что оно запрещает запись во флэш, но читал, что для этого и было предназначено
     
    mcmega нравится это.
  12. Paul_B

    Paul_B Новичок

    Сообщения:
    122
    Симпатии:
    1
    Кому интересно, сделал с поддержкой IP-настроек. Помимо этого в EEPROM можно писать дополнительные параметры. Под SSID и Пароль отвел по 16 байт.
    Перед тем как попасть на страницу настроек из EEPROM считываются настройки и вставляются в соответствующие поля.
    Еще добавил помимо функции стирания настроек - возобновление подключения по старым настройкам, сохраненным в памяти, что также полезно, если вдруг отключился WiFi - после его включения связь будет восстановлена.
    Также добавил в настройки возможность задавать идентификационный номер модуля (изначально берется из Chip_id

    esp8266_eeprom.ino
     
    Последнее редактирование: 5 дек 2017
  13. EvgenDRV

    EvgenDRV Новичок

    Сообщения:
    4
    Симпатии:
    0
    Доброго времени. Помогите разобраться со скетчем aESPtemplate.ino отправляю get запрос sendURL("/foo/get.php?a=444"); всё прекрасно работает, на сайте php принимает данные и раскидывает в БД.
    А как получить ответ? В примере BasicHTTPClient.ino получалось, а в этом скетче не могу никак допетрить. Помогите плиз.
     
  14. Vitaly

    Vitaly Читатель

    Сообщения:
    177
    Симпатии:
    16
    в 514 строке sendURL есть
    Код (Text):
    1. String line = client.readStringUntil('\r');
    2. //Serial.print(line);
    я сейчас уже не помню читает ли это полностью ответ или только заголовки ответа, надо пробовать
    ну и потом нужные данные обработать и вернуть из функции
     
  15. EvgenDRV

    EvgenDRV Новичок

    Сообщения:
    4
    Симпатии:
    0
    это и пробовал сразу, но ничего не пришло. Может как-то связано с ('\r') ?
    У меня в get.php одна только строчка f10110000
     
  16. EvgenDRV

    EvgenDRV Новичок

    Сообщения:
    4
    Симпатии:
    0
    Оказывается delay(5) нужно побольше сделать... тупо убил весь день. Теперь приходят заголовки HTTP/1.1 200 OK но не то что нужно
     
  17. EvgenDRV

    EvgenDRV Новичок

    Сообщения:
    4
    Симпатии:
    0
    Какой же я нуб. Нужно заменить client.readStringUntil на просто client.readString
    и приходит
    Код (Text):
    1. HTTP/1.1 200 OK
    2. Server: nginx/1.14.1
    3. Date: Fri, 12 Apr 2019 14:55:53 GMT
    4. Content-Type: text/html; charset=UTF-8
    5. Transfer-Encoding: chunked
    6. Connection: close
    7. Vary: Accept-Encoding
    8. X-Powered-By: PHP/5.6.40
    9. X-Hosted-By: http://www.host-food.ru/
    10.  
    11. 16
    12.   f444777110000
    13.  
    14.  
    15. 0
    16.  
    а как лишнее отсечь? в примере BasicHTTPClient.ino приходило только f444777110000


    Можно конечно пропарсить и все значения распихать куда нужно, но может есть более изящный способ
     
  18. Vitaly

    Vitaly Читатель

    Сообщения:
    177
    Симпатии:
    16
    в httpclient используется библиотека более высокого уровня где есть отрезание лишнего
    конечно можно переделать эту отправку на те функции и ими пользоваться, тем более что в этот скетч они тоже линкуются из-за системы обновлений
     

Поделиться этой страницей