2011-10-12 36 views
2

我正在通過串口與電路通信,並想知道我是否應該設置寫入超時?c#SerialPort WriteTimeout使用?

有人可以舉例說明爲什麼/如何使用它?我理解讀取超時的重要性(例如,我剛剛發送了一個命令,我應該在250毫秒內收到一個響應),但是沒有真正看到寫入超時的原因。在一臺非常舊的電腦上,需要超長時間才能發送字符串?

謝謝。

+0

它檢測到設備關閉握手時間過長。這是否是一個問題取決於你。 –

回答

3

如果您正在使用硬件握手,字節將不會被寫入,直到已達到適當的握手引腳狀態。因此,您可以等待其他設備發出信號,告知它已準備好接收更多數據,將緩衝區標識爲末尾,或者設備脫機。如果硬件發生了搖動關閉,或者在串行端口(RTS到CTS)上進行跳線,那麼只有在可能超時的情況下,才能更快地將字節寫入設備,以便通過線路發送。最終你將填充輸出緩衝區和塊(假設你沒有使用async io)。如果驅動程序無法以足夠快的速度清除緩衝區,如果您將時間設置得太短,則可能會超時進行寫入。

+0

太棒了!謝謝您的幫助。 – john