如果没有以太网电缆,以太网开始阻塞60秒

rob*_*rob 5 ethernet arduino

我正在制作一个时钟.我想通过将以太网电缆插入时钟来设置时钟.大多数情况下,时钟不会插入互联网.

我有一个Arduino板和一个以太网屏蔽,可以成功连接到时间服务器并读取时间(请参阅示例>以太网下的UdpNtpClient示例文件).

问题是,要配置以太网屏蔽,Ethernet.begin()如果屏蔽未连接到Internet ,则呼叫会阻塞60秒.我希望时钟告诉时间并定期检查它是否插有以太网电缆,如果有,请对时间进行任何更正.但是,大多数情况下,这种检查会产生负面结果,因此我每次都不能让时钟冻结60秒.

是否可以检测电缆是否以比Ethernet.begin()功能更快的方式连接?是否有可能编写一个"多线程"解决方案,哪里Ethernet.begin()是非阻塞的?

Luk*_*ins 1

看看现有的以太网库,不可能防止它阻塞。

我猜你正在使用 DHCP?这似乎就是阻塞的来源。使用静态IP地址时是否遇到同样的问题?

Google 上有许多博客文章涵盖了这个确切的问题,包括以太网库的一些分支,它们允许您以非阻塞的方式执行此操作。