2017-10-30 12 views
1

마지막 프로젝트에서 나는 BLE 플러그인을 사용합니다.Xamarin.Forms - BLE 장치 연결이 끊어졌습니다.

enter image description here

하지만 지금은 그냥 장치를 찾고 당신이 목록에 직접 무엇을 발견 추가 해요

adapter.DeviceDiscovered += (s, a) => 

    { 
     myDeviceList.Add(a.Device); 
    } 

     await adapter.StartScanningForDevicesAsync(); 
.

이 검색이 계속 작동하고 어떤 장치가 손실되면 자동으로 여기를 삭제할 수 있습니다.

BLE에는 StartScanningForDevicesAsync 클래스가 있지만 이것이 나에게 유용 할 지 모르겠다.

event EventHandler<DeviceErrorEventArgs> DeviceConnectionLost; 
     // 
     // Summary: 
     //  Occurs when a device has been disconnected. This occurs on intendet disconnects 
     //  after Plugin.BLE.Abstractions.Contracts.IAdapter.DisconnectDeviceAsync(Plugin.BLE.Abstractions.Contracts.IDevice). 

이것이 가능합니까?

+0

와 통신하기 위해 사용하는 기능을 유의하시기 바랍니다 - BLE 스캔이 매우 비싼 절차 배터리. 가이드 라인에서는 시간 간격을 최소화하여 기기를 검색하는 것을 권장합니다 (예 : 앱에서 15 초 사용). 타이머를 사용하여 기기를 검사하는 방법에 대한 조언을 드릴 수 있습니다. 예를 들어, 분당 10 초 (최소한이 값에서 시작하여 나중에 조정할 수 있습니다.) – Miamy

+0

@Miamy 조언을 주셔서 감사합니다. 1 분 정도 스캔을 원한다면 어떤 종류의 코드를 사용해야합니까? 30 초마다 한 번씩 Scan 기능을 호출하려면 Task.Delay (30000)를 기다립니다. 명령을 사용했지만 이번에는 스캔 기능이 실행되지 않습니다. –

답변

0

나는이 같은 (의사 + C 번호)를 사용할 수 있습니다, 생각 :

StartTimer(TimeSpan.FromSeconds(30), 
      () => 
      { 
       if (!isScanning) 
       { 
        new Handler().PostDelayed(StopScan, 10000); // stop 
             scanning after 10 sec 
        isScanning = true; 
        StartScan(); 
       } 
       return true; // this result will tell to fire onTimer event again 
      }); 
다음

StartScan 및 StopScan - 당신이 BLE