Есть ли тайм-аут для 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
2 ответа
Тайм-аут по умолчанию для DHCP составляет 1 минуту. Существует также тайм-аут ответа, и в библиотеке millis используется для тайм-аутов. Я не знаю, есть ли тайм-аут для всего, но полагаю, что есть.
Если он перестанет работать, когда кабель Ethernet не подключен, это будет ошибкой. Если что-то подобное есть в библиотеке, то у вас нет возможности обойти Ethernet.begin, когда это заняло слишком много времени. Как долго вы ждали ?
Это исходный код для Ethernet.begin: Ethernet.cpp
Я только что разобрался с функцией Ethernet.begin (возможно, они изменили ее с момента публикации поста), и ее можно вызвать так:
Ethernet.begin(mac, тайм-аут)
Затем я вызвал его с Mac и значением тайм-аута, и это работает!
Вы также можете установить «responseTimeout», но я не уверен, в чем тогда разница: Ethernet.begin(mac, timeout, responseTimeout)
- Может ли Arduino работать круглосуточно?
- Клиент MQTT на Arduino + SIM900
- Удаленная загрузка кода на плату Arduino через интернет
- Отправка данных Arduino через Ethernet на сервер PHP.
- Простая веб-страница с Ethernet-шилдом Arduino на SD-карте
- Как создать сервер сокетов Arduino для получения сообщений
- Почему плата Ethernet W5100 не работает на гигабитном коммутаторе?
- Можно ли читать VGA с помощью Arduino?
Спасибо, это приятно знать. Я не знаю точно, как долго я это делал, я предполагаю обычные 30 секунд, так что мне нужно будет сделать это еще раз и удвоить свое терпение, лол, @John Sly
Код действительно может зависнуть в функции
W5100Class::execCmdSn. Он ждет завершения команды путем чтения регистра и ждет, пока read вернет 0. Если он по какой-то причине возвращает ненулевое значение (плохой контакт и т. Д.), Функция повесит трубку., @Alexandr Zarubkin