Есть ли тайм-аут для Ethernet.begin?
Я работаю над проектом, но только для тестирования я еще не подключил его к Интернету, хотя код ДОЛЖЕН быть готов к запуску.
Пытаясь протестировать часть моего кода с помощью последовательной консоли, я понял, что моя программа блокируется, и проследил ее до этого места. Теперь arduino uno и ethernet shield в настоящее время не подключены к Интернету, поэтому мой вопрос в том, как я могу тайм-аут этой функции, чтобы я мог продолжать свою программу, когда нет Интернета для ее подключения.
Вот мой код в функции настройки
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
// попробуйте настроить с помощью IP-адреса вместо DHCP:
Ethernet.begin(mac, ip);
}
Если у кого-то есть какие-то мысли или предложения, я буду вам очень признателен.
@John Sly, 👍0
1 ответ
Тайм-аут по умолчанию для DHCP составляет 1 минуту. Существует также тайм-аут ответа, и в библиотеке millis используется для тайм-аутов. Я не знаю, есть ли тайм-аут для всего, но полагаю, что есть.
Если он перестанет работать, когда кабель Ethernet не подключен, это будет ошибкой. Если что-то подобное есть в библиотеке, то у вас нет возможности обойти Ethernet.begin, когда это заняло слишком много времени. Как долго вы ждали ?
Это исходный код для Ethernet.begin: Ethernet.cpp
- Клиент MQTT на Arduino + SIM900
- Удаленная загрузка кода на плату Arduino через интернет
- Отправка данных Arduino через Ethernet на сервер PHP.
- Простая веб-страница с Ethernet-шилдом Arduino на SD-карте
- Как создать сервер сокетов Arduino для получения сообщений
- При подключении client.connect() возвращает 0
- Невозможно настроить Ethernet с помощью Arduino Uno R3
- Проблемы со сбросом Ethernet shield
Спасибо, это приятно знать. Я не знаю точно, как долго я это делал, я предполагаю обычные 30 секунд, так что мне нужно будет сделать это еще раз и удвоить свое терпение, лол, @John Sly
Код действительно может зависнуть в функции
W5100Class::execCmdSn
. Он ждет завершения команды путем чтения регистра и ждет, пока read вернет 0. Если он по какой-то причине возвращает ненулевое значение (плохой контакт и т. Д.), Функция повесит трубку., @Alexandr Zarubkin