cbperipheral

___ tag123ios ___ iOS ist das mobile Betriebssystem, das auf dem Apple iPhone, iPod touch und iPad ausgeführt wird. Verwenden Sie dieses Tag [ios] für Fragen zur Programmierung auf der iOS-Plattform. Verwenden Sie die verwandten Tags [objective-c] und [swift] für Probleme, die für diese Programmiersprachen spezifisch sind. ___ tag123softwaredesign ___ Softwaredesign ist die Aufgabe zu entscheiden, welche Eigenschaften, Elemente, Verantwortlichkeiten, Schnittstellen, Beziehungen und Interaktionen erforderlich sind, um eine effektive Software zu erstellen. ___ tag123architecture ___ Architektur umfasst den Prozess, die Artefakte und die High-Level-Struktur einer Lösung. ___ tag123cbeperipheral ___ Die Klasse CBPeripheral repräsentiert Remote-Peripheriegeräte, die Ihre App mithilfe eines zentralen Managers (eine Instanz von CBCentralManager) erkannt hat oder mit der sie gerade verbunden ist. ___ qstnhdr ___ CoreBluetooth: Wie man Code für viele Eigenschaften (30 - 40) entwirft? ___ answer18906146 ___

Das Ausbrechen von Logik in mehrere eigenständige Klassen ist immer ein gutes Design. Sie sollten unbedingt versuchen, Ihren Code nach Services oder anderen Kategorien zu gruppieren. Obwohl das Peripheriegerät nur über einen einzelnen Delegaten verfügt, können Sie das Dispatchermuster, in dem Sie die verschiedenen Dienstimplementierungen und Auswahlschlüssel (praktisch die Dienstobjekte) registrieren, problemlos implementieren und den Aufruf an den angegebenen Diensthandler weiterleiten. Wenn die Serviceklassen das Protokoll %code% implementieren, können Sie mit diesem Design jeden Dienst einzeln testen / erneut verwenden, wenn Sie nur minimale Änderungen am Code vornehmen müssen.

Im Pseudo-Obj-c-Code würde der Dispatcher-Peripherie-Delegat wie folgt aussehen:

%Vor%

Bei dienst- oder merkmalbezogenen Callbacks sollte das Dispatching implementiert werden. Ein Beispiel:

%Vor%

Wenn der zentrale Manager ausgeschaltet ist, ist es die beste Lösung, den gesamten peripheren Delegierten zu löschen. Kümmern Sie sich nicht um Reinitialisierung, sondern planen Sie die Entsorgung. Natürlich können Sie bei Bedarf die Service-Handler über die drohende Zerstörung benachrichtigen.

    
___ tag123corebluetooth ___ CoreBluetooth ist ein Framework für iOS und Mac OS X zur Interaktion mit Bluetooth Low Energy ("BLE") - Zubehör. ___ qstntxt ___

Ich habe ein wenig gesucht und das als mögliche doppelte Frage gefunden:

Mehrere CBPeripherals für dasselbe Gerät

Mein Problem ist:

Ich habe mehrere Dienste , die alle zusammen etwa 30-40 Merkmale haben (Ja, ich brauche alle von ihnen ...). Als Ausgangspunkt für den Umgang mit CoreBluetooth habe ich immer den Apple-Beispielcode ( CoreBluetooth Temperature Sensor ).

Erkennung und Service / Merkmal-Handling ist in zwei Klassen unterteilt, und das funktioniert gut für einige Merkmale. Aber die Handhabung dieser riesigen Menge an Eigenschaften in einer Klasse ist nicht, was ich unter "gutes Software-Design" verstehe.

Die erste Idee, die Ihnen in den Sinn kommt, ist eine Klasse für jeden Dienst zu erstellen. Aber leider kann ein CBPeripheral gleichzeitig nur ein CBPeripheralDelegate haben. Dies bedeutet, dass ich es nicht in mehrere Klassen aufteilen kann.

( Wir müssen die Diskussion nicht beginnen, wenn BLE die richtige Technologie ist, um diese Datenmenge zu erhalten - das ist es nicht. Aber es gibt Hersteller, die BLE verwenden, damit sie sich nicht damit herumärgern müssen das MFi-Programm ... )

Ich lese auch das endlich bereitgestellte CoreBluetooth Programmierhandbuch aber es beschreibt nur grundlegende Arbeitsabläufe - nichts über das richtige Design.

Ich suche nach einem schönen Designansatz. Sie haben möglicherweise Vorschläge, Hinweise oder Links zu Beispielcode? Vielen Dank im Voraus!

    
___
2
Antworten

Kann ich meinen Mac als Bluetooth-Peripheriegerät konfigurieren?

Ich arbeite an einer Idee, bei der mein Mac einige Daten an mein iOS-Gerät senden muss. Ich weiß, CoreBluetooth Framework ist nicht für Mac OS und nur für iOS, gibt es also eine Möglichkeit, dass ich meinen Mac ein Peripheriegerät zu stellen?...
10.05.2013, 22:41
1
Antwort

CoreBluetooth: Wie man Code für viele Eigenschaften (30 - 40) entwirft?

Ich habe ein wenig gesucht und das als mögliche doppelte Frage gefunden: Mehrere CBPeripherals für dasselbe Gerät Mein Problem ist: Ich habe mehrere Dienste , die alle zusammen etwa 30-40 Merkmale haben (Ja, ich brauche alle von ih...
19.09.2013, 14:21