Ich habe ein BTLE-Gerät (Bluetooth Low Energy), das ich an meinen PC anschließen muss. Um dies zu tun, verwende ich die Windows-API-Referenz in einer Desktop-WPF-App.
Das Bluetooth-Gerät ist ziemlich einfach: 1 Dienst, 2 Merkmale (eine lesen / notify, eine zu schreiben).
%Vor%
Windows-API-Code für C #
%Vor%
Nun, es funktioniert, irgendwie ... Es ist instabil wie die Hölle, die meiste Zeit erzeugt es Fehler, die nicht gelöst werden können:
Linie: BLEData_ReadNotify.WriteClientCharacteri ... erzeugt
Es gibt keinen Benutzersitzungsschlüssel für die angegebene Anmeldesitzung. (Ausnahme von HRESULT: 0x80070572)
und Die Semaphor-Zeitüberschreitung ist abgelaufen. (Ausnahme von HRESULT: 0x80070079) . Dieser zweite Fehler tritt weniger häufig auf und tritt auf, wenn das Skript zuerst nichts erhält und dann über einen Timer versucht, den RUN-Befehl erneut zu senden, worauf alle abstürzen und der Fehler auftritt.
Beim Suchen auf Stackoverflow und vielen Sites habe ich festgestellt, dass beide obigen Fehler nicht zu lösen sind. Daher meine Frage:
Kann der obige Code mit 32Feet.net neu geschrieben werden?
Im Jahr 2012 war es nicht möglich link , um blö überhaupt zu verwenden, aber vielleicht ist es jetzt? Verwenden Sie die Scanmethode in dieser Antwort link kann ich mein BLE-Gerät finden, wenn es NICHT gepaart ist.
Also, ich habe einen Code ausprobiert
%Vor%
aber ich bin in der Zeile localClient.Connect mit dem Fehler gestrandet:
Eine Ausnahme vom Typ 'System.Net.Sockets.SocketException' ist aufgetreten.
Weitere Informationen: Ein Verbindungsversuch ist fehlgeschlagen, weil der verbundene Teilnehmer nach einer gewissen Zeit nicht ordnungsgemäß reagiert hat oder die Verbindung nicht hergestellt werden konnte, weil der verbundene Host nicht reagiert hat
Kann der Windows-API-Code in 32feet.net neu geschrieben werden, wenn ja, wie weiter?
Hinweis: Ich habe versucht, eine Verbindung zu einem BT2.1-Gerät mit Windows-nativen .net-Code, aber der serielle Port ist instabil und ein Schmerz im Kopf. Mit 32feet.net funktioniert es jetzt prächtig über SerialPort, sehr stabil und es verbindet sich jedes mal!