2011-12-16 17 views
5

Tôi đang tạo đồng hồ. Tôi muốn đặt đồng hồ bằng cách cắm cáp Ethernet vào đồng hồ. Hầu hết thời gian đồng hồ sẽ không được cắm vào Internet.Ethernet bắt đầu chặn trong 60 giây nếu không có cáp Ethernet

Tôi có bảng Arduino và Ethernet shield có thể kết nối thành công với máy chủ thời gian và đọc thời gian (Xem tệp ví dụ UdpNtpClient trong Ví dụ> Ethernet).

Vấn đề là định cấu hình lá chắn Ethernet, các khối gọi Ethernet.begin() cho 60   giây nếu khiên không được kết nối với Internet. Tôi muốn đồng hồ cho biết thời gian và định kỳ kiểm tra xem nó có cắm cáp Ethernet hay không và nếu có, hãy sửa bất kỳ thời gian nào. Hầu hết thời gian kiểm tra này sẽ có một kết quả tiêu cực, tuy nhiên, vì vậy tôi không thể có đồng hồ đóng băng cho 60   giây mỗi lần.

Có thể phát hiện xem cáp có được kết nối nhanh hơn chức năng Ethernet.begin() không? Có thể viết giải pháp "đa luồng", trong đó Ethernet.begin() không bị chặn không?

Trả lời

1

Nhìn vào thư viện Ethernet chứng khoán, không thể ngăn chặn nó chặn.

Tôi đoán bạn là using DHCP? Điều này có vẻ là nơi chặn đến. Bạn có gặp vấn đề tương tự khi sử dụng địa chỉ IP tĩnh không?

Có một số bài đăng trên blog có sẵn trên Google bao gồm vấn đề chính xác này, bao gồm một số nhánh của thư viện Ethernet cho phép bạn thực hiện việc này theo cách không bị chặn.

+0

Cảm ơn! Tôi nghĩ cái này sẽ có hiệu quả. Ai đó cũng nói rằng tôi có thể nhận được thời gian từ một đơn vị GPS, vì vậy tôi có thể thử điều đó quá. – rob

+0

GPS âm thanh như một ý tưởng lớn đối với tôi, chúng tôi làm điều đó với phần cứng của chúng tôi để đồng bộ hóa đồng hồ ngay từ đầu. Chỉ cần nhớ thời gian GPS là một vài giây trong số thời gian UTC bình thường ... Ngoài ra, không cần phải cắm cáp ethernet. Chúc bạn may mắn với dự án đồng hồ của mình = D –

+0

Tôi có thể tìm thấy những "bài đăng trên blog có sẵn trên Google bao gồm vấn đề chính xác này"? – powtac

1

Trong tệp tiêu đề DHCP.h bạn có thể tìm định nghĩa lớp cho kết nối DHCP mới. Sau đó, bạn có thể thấy rằng có một giá trị thời gian chờ mặc định là 60000ms.

(gợi ý hữu ích: nếu bạn vượt qua nỗ lực ban đầu và bắt đầu sử dụng nhật thực để quản lý các dự án adruino của bạn, nó thực sự tuyệt vời vì bạn chỉ có thể nhấn F3 trên một chức năng như Ethernet.begin và thực hiện một chút các thư viện để tìm các loại cài đặt này)

Rất khó để biết thời gian chờ là bao lâu. Nhưng một phút có vẻ như là một thời gian rất dài. Tất nhiên bạn không muốn đi ngắn. Tôi sẽ không đi dưới 15 giây.

/David Cox

Các vấn đề liên quan