En train d'essayer de faire fonctionner un échantillon Bluteooth.Résoudre 'CBConcreteCentralManager n'est pas sous tension' dans Core Bluetooth dans MonoTouch
J'utilise cet exemple comme référence - http://developer.apple.com/library/mac/#samplecode/HeartRateMonitor/Listings/HeartRateMonitor_HeartRateMonitorAppDelegate_m.html#//apple_ref/doc/uid/DTS40011322-HeartRateMonitor_HeartRateMonitorAppDelegate_m-DontLinkElementID_4
Bluetooth est activé sur mon appareil.
J'ai essayé d'utiliser le code comme:
_manager = new CBCentralManager();
_manager.DiscoveredPeripheral += HandleDiscoveredPeripheral;
_manager.ConnectedPeripheral += HandleConnectedPeripheral;
_manager.DisconnectedPeripheral += HandleDisconnectedPeripheral;
et j'ai essayé d'écrire mon propre délégué héritant de CBCentralManagerDelegate
mais quand je l'appelle StartScan
void StartScan()
{
var spp = Guid.Parse("00001101-0000-1000-8000-00805f9b34fb");
_manager.ScanForPeripherals(new [] { spp }, null);
}
je vois une erreur:
bluetooth1[1210:907] CoreBluetooth[WARNING] <CBConcreteCentralManager: 0x9beea0> is not powered on
En regardant autour de cette erreur que j'ai trouvé juste deux coups:
- What causes CBCentralManagerStateUnknown in iOS?
- http://www.zitao.org/wiki/development-log/le-zeng/2012-Nov-week1-devnote.html
Mais aucun de ceux-ci est particulièrement utile ...
J'ai essayé retarder le démarrage jusqu'à ce que l'état change:
void HandleUpdatedState (object sender, EventArgs e)
{
// more to do here....
Console.WriteLine("State updated " + e.ToString());
switch (_manager.State) {
case CBCentralManagerState.PoweredOn:
_manager.DiscoveredPeripheral += HandleDiscoveredPeripheral;
_manager.ConnectedPeripheral += HandleConnectedPeripheral;
_manager.DisconnectedPeripheral += HandleDisconnectedPeripheral;
StartScan();
break;
case CBCentralManagerState.Unauthorized:
break;
}
}
- mais cela ne semble jamais être appelé.
J'ai aussi essayé de courir l'échantillon de Xcode, mais la force n'est pas avec moi aujourd'hui ...
Tout le monde a des idées ce que CBConcreteCentralManager: 0x9beea0 est pas sous tension sur les moyens et la façon de le résoudre ici?
Vous avez raison. Le générateur de liaison crée un constructeur par défaut (à moins qu'on ne lui dise de ne pas le faire) et la documentation d'Apple sur ce qui peut être 'init'ed manque un peu. J'ai découvert les extra-cœurs de CoreBluetooth cette semaine (puisqu'ils se plantent au moment de la disposition en utilisant OSX) et ils seront marqués comme '[Obsolete]' dans les prochaines versions MT. – poupou
Merci :) Mes autres résultats sont sur http://forums.xamarin.com/discussion/476/corebluetooth-spp-sample#latest - se sent comme un problème avec .Net Guid à la traduction CBUUID. Je ne parviens toujours pas à avoir de connexion avec mon sphero en ce moment - je ne sais pas pourquoi les docs de Sphero font aussi un peu défaut! Si vous voulez discuter, alors vous voir sur ce fil de discussion (StackOverflow commentaires pas aussi bon pour le chat!) – Stuart
Je pense que le problème est que .Net ne peut pas faire la distinction entre un tableau Guid nul et tableau nul CBUUID, vous devez spécifier le type . Je viens d'utiliser "new CBUUID [] {}" et ça marche .. – Rogier