2014-04-22 87 views
0

我正在開發藍牙應用程序在c#中使用32feet.net庫從傳感器讀取數據。 我能夠與傳感器進行通信並能夠讀取值,發送命令等。 通信線程將等待讀取或寫入命令到傳感器。 我期望傳感器突然關閉時會拋出IOException。但從未得到例外。32feet藍牙c#連接設備關閉時拋出異常?

需要幫助弄清楚當傳感器突然斷電時會發生什麼樣的異常?

回答

1

應該發生一個異常:在20秒後執行下一個IO操作。你在等那麼久嗎?或者你的閱讀調用返回零?

見#2 https://32feet.codeplex.com/wikipage?title=Connected%20Property

在我與藍牙測試似乎大約需要20秒鐘一臺設備要認識到其他設備已經 - 儘管這是可配置的。這在藍牙中稱爲「鏈接監督超時」。因此,您必須等待系統才能知道連接丟失,然後您將在下一次IO操作中發現如果在沒有收到數據的情況下開始讀取操作,它將阻止直到連接失敗或關閉(或收到一些數據)。

+0

我正在等待閱讀。我有5秒的讀取超時時間。當超時過期時,我得到一個異常。然後再次讀取並在循環中等待,即使其他設備關閉。我得到的例外只是因爲超時。在某些情況下,我寫入設備,如果設備關閉,我會得到異常,並且我可以檢測到損壞的管道。如果我在閱讀中等待,我無法檢測到破損的管道。 – subbu147

+0

你可以嘗試沒有5s超時,然後看看會發生什麼。 (由set_ReceiveTimeout設置?) – alanjmcf