Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Meer informatie over het gebruik van de gyrometer om wijzigingen in gebruikersbewegingen te detecteren.
Gyroscopen vormen een aanvulling op versnellingsmeters in gamecontrollers. De versnellingsmeter kan lineaire beweging meten terwijl de gyrometer hoeksnelheid of draaibeweging meet.
- Belangrijke API’s:Windows.Devices.Sensors, Gyrometer
Note
Dit artikel is gericht op code die laat zien hoe u een gyrometer gebruikt. Zie Sensors: Gyrometer voor een overzicht van de gyrometersensor.
Prerequisites
U moet bekend zijn met de gyrometersensor en het gebruik ervan. Zie Sensoren: Gyrometer.
Het apparaat dat u gebruikt, moet een gyrometer ondersteunen.
Voorbeeldcode
using Microsoft.UI.Dispatching;
using Microsoft.UI.Xaml.Controls;
using Windows.Devices.Sensors;
namespace DevicesDemo.Pages
{
public sealed partial class GyrometerPage : Page
{
private Gyrometer? gyrometer;
public GyrometerPage()
{
InitializeComponent();
// Get the default gyrometer sensor object.
gyrometer = Gyrometer.GetDefault();
if (gyrometer != null)
{
// Establish the report interval.
uint minReportInterval = gyrometer.MinimumReportInterval;
uint reportInterval = minReportInterval > 16 ? minReportInterval : 16;
gyrometer.ReportInterval = reportInterval;
// Assign an event handler for the reading-changed event.
gyrometer.ReadingChanged += Gyrometer_ReadingChanged;
}
else
{
statusBar.Message = "No gyrometer was found.";
statusBar.Severity = InfoBarSeverity.Error;
statusBar.IsOpen = true;
}
}
// This event handler writes the current gyrometer reading to
// the three axis text blocks on the XAML page.
private void Gyrometer_ReadingChanged(Gyrometer sender, GyrometerReadingChangedEventArgs args)
{
DispatcherQueue?.TryEnqueue(DispatcherQueuePriority.Normal, () =>
{
GyrometerReading reading = args.Reading;
txtXAxis.Text = String.Format("{0,5:0.00}", reading.AngularVelocityX);
txtYAxis.Text = String.Format("{0,5:0.00}", reading.AngularVelocityY);
txtZAxis.Text = String.Format("{0,5:0.00}", reading.AngularVelocityZ);
});
}
}
}
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid Margin="24">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="44"/>
<RowDefinition Height="44"/>
<RowDefinition Height="44"/>
</Grid.RowDefinitions>
<TextBlock Text="X-axis:" Style="{StaticResource LabelTextBlockStyle}"/>
<TextBlock x:Name="txtXAxis" Grid.Column="1" Text="---"/>
<TextBlock Grid.Row="1" Text="Y-axis:" Style="{StaticResource LabelTextBlockStyle}"/>
<TextBlock x:Name="txtYAxis" Grid.Column="1" Grid.Row="1" Text="---"/>
<TextBlock Grid.Row="2" Text="Z-axis:" Style="{StaticResource LabelTextBlockStyle}"/>
<TextBlock x:Name="txtZAxis" Grid.Column="1" Grid.Row="2" Text="---"/>
</Grid>
<InfoBar x:Name="statusBar" Grid.Row="1"/>
</Grid>
Wanneer de app wordt uitgevoerd, kunt u de gyrometerwaarden wijzigen door het apparaat te verplaatsen.
In het vorige voorbeeld ziet u de essentiële code die u moet schrijven om gyrometerinvoer in uw app te integreren.
Verbinding maken met de sensor
Roep de GetDefault-methode aan om een verbinding tot stand te brengen met de standaard gyrometer.
private Gyrometer? gyrometer;
// ...
gyrometer = Gyrometer.GetDefault();
U kunt ook FromIdAsync aanroepen om een Gyrometer-object te maken op basis van een DeviceInformation.Id-waarde. Zie Apparaten inventariseren voor meer informatie.
Als er geen gyrometersensor wordt gedetecteerd, wordt het statusbericht bijgewerkt om de gebruiker te informeren.
Het rapportinterval instellen
De app brengt het rapportinterval vast binnen de Methode MainPage. Met deze code wordt het minimale interval opgehaald dat door het apparaat wordt ondersteund en vergeleken met een aangevraagd interval van 16 milliseconden (wat een vernieuwingsfrequentie van 60 Hz bij benadering is). Als het minimaal ondersteunde interval groter is dan het aangevraagde interval, stelt de code de waarde in op het minimum. Anders wordt de waarde ingesteld op het aangevraagde interval.
uint minReportInterval = gyrometer.MinimumReportInterval;
uint reportInterval = minReportInterval > 16 ? minReportInterval : 16;
gyrometer.ReportInterval = reportInterval;
Sensorgegevens lezen
De nieuwe gyrometergegevens worden opgevangen in de eventhandler ReadingChanged. Telkens wanneer het sensorstuurprogramma nieuwe gegevens van de sensor ontvangt, worden de waarden aan uw app doorgegeven met behulp van deze gebeurtenis. In dit voorbeeld worden deze nieuwe waarden naar de tekstblokken geschreven die in de XAML voor de bijbehorende pagina zijn gevonden.
gyrometer.ReadingChanged += Gyrometer_ReadingChanged;
// ...
private void Gyrometer_ReadingChanged(Gyrometer sender, GyrometerReadingChangedEventArgs args)
{
DispatcherQueue?.TryEnqueue(DispatcherQueuePriority.Normal, () =>
{
GyrometerReading reading = args.Reading;
txtXAxis.Text = String.Format("{0,5:0.00}", reading.AngularVelocityX);
txtYAxis.Text = String.Format("{0,5:0.00}", reading.AngularVelocityY);
txtZAxis.Text = String.Format("{0,5:0.00}", reading.AngularVelocityZ);
});
}
Verwante onderwerpen
Windows developer