2014-04-22 1 views
0

32feet.net 라이브러리를 사용하여 센서에서 데이터를 읽는 C#으로 블루투스 응용 프로그램을 개발 중입니다. 센서와 통신 할 수 있고 값을 읽고 명령을 보낼 수 있습니다. 통신 스레드는 센서에 대한 읽기 또는 쓰기 명령을 기다리고 있습니다. 센서가 갑자기 꺼질 때 IOException이 발생 될 것으로 예상됩니다. 그러나 결코 예외를 얻지 않았다.32feet 블루투스 C# 연결된 장치가 꺼지면 예외가 발생합니까?

센서가 갑자기 꺼질 때 어떤 종류의 예외가 발생합니까?

답변

1

예외가 발생해야합니다. 20 초 후 다음 IO 작업을 수행하면 예외가 발생합니다. 오래 기다리고 있니? 또는 Read 호출이 0을 반환합니까? 이 구성 될 수 있지만 -

블루투스 내 테스트에서 https://32feet.codeplex.com/wikipage?title=Connected%20Property

에서 # 2를 참조하십시오, 하나의 장치가 다른 장치가되었다는 것을 인식하는 데 약 20 초 정도 걸릴 것으로 보인다. 이를 Bluetooth의 "링크 감독 제한 시간"이라고합니다. 따라서 시스템이 연결이 끊어 졌음을 알기 위해 오래 기다려야합니다. 그러면 다음 IO 작업에서 알 수 있습니다. 예를 들어 데이터가 수신되지 않을 때 읽기를 시작하면 블록이 차단됩니다 연결이 실패하거나 닫힐 때까지 (또는 일부 데이터가 수신 될 때까지).

+0

나는 읽는 중입니다. 나는 5 초의 읽기 타임 아웃을 가지고있다. 시간 초과가 만료되면 예외가 발생합니다. 그런 다음 다른 장치가 꺼져 있어도 다시 읽고 루프를 기다립니다. 예외는 타임 아웃 때문입니다. 어떤 경우에는 장치에 쓰고, 장치가 꺼져 있으면 예외가 생겨 파손 된 파이프를 감지 할 수 있습니다. 내가 읽을 때 나는 깨진 파이프를 감지 할 수 없다. – subbu147

+0

5 초의 시간 제한없이 시도해보고 나서 어떻게되는지보십시오. (set_ReceiveTimeout에 의해 설정됩니까?) – alanjmcf

관련 문제