Leider werde ich da nicht schlau draus.
Ich habe und will keine ComboBox, also wollte ich eine UUID direkt eintragen, VS nimmt aber nichts an.
Es steht dann immer ".. kann nicht impilziert in Windows.Devices.Bluetooth.GenericAttributeProfile.GattCharacteristic konvertiert werden"
Sorry für die Noob Frage, ich beschäftige mich erst seit kurzem mit dem Thema. Alles andere wie notify usw. funktioniert.
Auch kann ich einen static Wert in die characteristics setzen, aber das ist ja nicht Sinn der Sache. Die Werte ändern sich über die Zeit.
Das musst du halt ähnlich bei dir machen. (Nur halt ohne Combobox)
Also alle Services (sind vermutlich die Bluetooth Geräte?) via bluetoothLeDevice.GetGattServicesAsync(BluetoothCacheMode.Uncached); holen und dann halt den richtigen in der/dem Liste/Array auswählen.
Zitat
Im Microsoft Beispiel wird dieser Wert folgendermaßen erzeugt:
Für die Zukunft solltest du die erwähnten Beispiele verlinken, dann müssen die Helfer nicht selbst danach suchen.
Danke @dannoe
Stimmt, sorry, nächstes mal verlinke ich direkt
Leider habe ich es immer noch nicht hinbekommen.
Ich verfolge zwei verschiedene Ansätze aktuell und würde gerne erstmal den ersten präsentieren:
public async void ConnectDevice()
{
var myDevicesResult = await DeviceInformation.FindAllAsync(BluetoothLEDevice.GetDeviceSelectorFromDeviceName("MyServer")); // Der DeviceWatcher hat "MyServer" noch nicht in seiner List, daher funktioniert der Code momentan noch nicht
DeviceInformation di = myDevicesResult.First();
BluetoothLEDevice bleDevice = await BluetoothLEDevice.FromIdAsync(di.Id);
var serviceResult = await bleDevice.GetGattServicesAsync();
var service = serviceResult.Services[0];
GattCharacteristicsResult charResult = await service.GetCharacteristicsAsync(BluetoothCacheMode.Cached);
var characteristics = charResult.Characteristics;
selectedCharacteristic = characteristics[0];
}
Es funktioniert noch nicht, da Devicewatcher mein Gerät noch nicht in seiner Liste hat.
Aber irgendwie kommmt mir das alles falsch vor.
Es kann doch nicht sein, dass ich einen Server starten kann und dann, um in eine Characteristic zu schreiben
erst dieses ganze andere Gedöns machen muss?!
Immerhin habe ich den Server ja wie gesagt selber gestartet und ich kann ja bereits Notifcations schicken.
Der andere Ansatz wäre dieser:
GattLocalCharacteristicResult result = await serviceProvider.Service.CreateCharacteristicAsync(Constants.ModusCharacteristicUuid, Constants.gattOperandParameters); // Hier wird eine Characteristic erstellt
modeCharacteristic = result.Characteristic;
modeCharacteristic.WriteRequested += WriteRequestTestAsync; // Jedes Mal, wenn geschrieben werden soll, wird WriteRequestTestAsync gestartet
private async void WriteRequestTestAsync(GattWriteRequestedEventArgs args)
{
using (args.GetDeferral())
{
GattWriteRequest requestTest = await args.GetRequestAsync();
ProcessWriteCharacteristicTest(requestTest);
}
}
private void ProcessWriteCharacteristicTest(GattWriteRequest requestTest)
{
requestTest.Respond();
}
Für mich sieht das aus, als ob ich damit auch in die Characteristic schreiben kann. Oder liege ich da falsch?
Leider bin ich noch zu sehr Anfänger, dass ich nicht weiß, wie manuell einen Write-Befehl ausführen kann mit diesem Code.
WriteRequestTestAsync(1);
funktioniert nicht und casten kann ich den Spaß ja scheinbar auch nicht