我正在 build 一个时钟。我想通过将以太网电缆插入时钟来设置时钟。大多数情况下,时钟不会连接到Internet。
我有一个Arduino开发板和一个以太网shield,它们可以成功连接到时间服务器并读取时间(请参阅示例>以太网下的UdpNtpClient示例文件)。
问题是要配置以太网屏蔽,如果屏蔽未连接到Internet,则Ethernet.begin()
调用会阻塞60秒。我想用时钟告诉时间,并定期检查是否插入了以太网电缆,如果有,请对时间进行任何更正。但是,大多数情况下此检查都会产生负面结果,因此我不能每次都将时钟卡住60秒。
是否可以检测电缆的连接速度是否比Ethernet.begin()
功能更快?是否可以编写Ethernet.begin()
非阻塞的“多线程”解决方案?
最佳答案
看一下现有的以太网库,不可能阻止它的阻塞。
我猜你是using DHCP吗?这似乎是阻止的来源。使用静态IP地址时会遇到同样的问题吗?
Google上有很多博客文章都涉及这个确切的问题,包括以太网库的一些分支,这些分支将使您能够以非阻塞的方式进行操作。
关于arduino - 如果没有以太网电缆,以太网开始阻塞60秒,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8530102/