我正在使用2臺配備有限unix工具的小型機器。兩者都通過串聯相互連接。我正在傳輸二進制數據,因此設備處於raw
模式。發送機器正在將文件發送到另一個文件,並且延遲X ms(指定爲參數)。我想知道是否有可能在目標機器上測量這些延遲,以確定有多少文件即將到來。直到現在我正在使用cat < /dev/ttyS5
,但這不是我的目的選項。如何知道什麼時候串行端口上沒有數據unix
有什麼想法?
感謝
我正在使用2臺配備有限unix工具的小型機器。兩者都通過串聯相互連接。我正在傳輸二進制數據,因此設備處於raw
模式。發送機器正在將文件發送到另一個文件,並且延遲X ms(指定爲參數)。我想知道是否有可能在目標機器上測量這些延遲,以確定有多少文件即將到來。直到現在我正在使用cat < /dev/ttyS5
,但這不是我的目的選項。如何知道什麼時候串行端口上沒有數據unix
有什麼想法?
感謝
恕我直言,最簡單的方法就是寫正等待字節串行線上一個小程序。 每次到達某個角色都會重置某種計時器/時間戳。 另一個線程可以在循環中評估此計時器/時間戳,並在計數器大於定義值時遞增計數器。
但請注意,您可能會遇到來自串行線路的延遲,因爲內核及其調度程序在「之間」。此外,你需要適當的鎖定當然!
Atmel USART已添加硬件來檢測接收器超時。但總的來說,尤其是來自用戶空間,您無法準確測量角色的「到達」時間。試圖衡量角色之間的延遲是愚蠢的錯誤;當「下一個」角色從未到達時,你如何處理案件?此外,你正在問一個XY問題。如果您有適當的消息協議來識別數據報/數據包中的數據並確保數據完整性,則甚至不需要依賴於無法獲得的測量值。 – sawdust
我仍然想知道爲什麼人們不堅持這個問題,而不是質疑爲什麼我會這樣做而不是他們喜歡它。 – Lomezno