Пример #1
0
 protected override async Task ExecuteAsync(CancellationToken cancellationToken)
 {
     _hcsr04       = new Hcsr04(_triggerPin, _echoPin, _pinNumberingScheme);
     _prevDistance = Distance;
     while (!cancellationToken.IsCancellationRequested)
     {
         try
         {
             Distance = _hcsr04.Distance.Centimeters;
             _communicationObject.Distance = Distance;
         }
         catch { }
         if (_prevDistance <= _borderDistanceCentimeters && Distance > _borderDistanceCentimeters)
         {
             _communicationObject.ObjectInside?.Reset();
             _communicationObject.ObjectOutside?.Set();
             if (_communicationObject.BorderCrossedEvent != null)
             {
                 _communicationObject.BorderCrossedEvent(this, BorderCrossed.Outside);
             }
         }
         else
         if (_prevDistance > _borderDistanceCentimeters && Distance <= _borderDistanceCentimeters)
         {
             _communicationObject.ObjectOutside?.Reset();
             _communicationObject.ObjectInside?.Set();
             if (_communicationObject.BorderCrossedEvent != null)
             {
                 _communicationObject.BorderCrossedEvent(this, BorderCrossed.Inside);
             }
         }
         _prevDistance = Distance;
         await Task.Delay(100);
     }
 }