我有多个具有相同服务和特性的 BLE 设备。我可以扫描和连接多个设备。连接后,尝试通过发送命令来区分每一个,但它不起作用。它与单个设备完美配合。它类似于套接字连接吗?就像服务器产生子线程,每个客户端都可以通过线程保持连接。请提供一些关于如何识别每台设备的提示。
我创建的 CBCentralManager 实例是单例的。
+ (id) sharedInstance
{
static BLEConnectionManager *this = nil;
if (!this) {
this = [[BLEConnectionManager alloc] init];
}
else {
[this scanDevice];
}
return this;
}
-(void) scanDevice {
[centralManager scanForPeripheralsWithServices:nil options:0];
}
- (id) init
{
centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
peripherals = [[NSMutableArray alloc] init];
[centralManager scanForPeripheralsWithServices:nil options:0];
return self;
}
=== 编辑
这行得通吗?在为每个设备建立连接后,我将在 didConnectPeripheral 委托方法中创建实例处理服务和特性,例如 Apple 提供的 temperatureSensor 示例。因此,每个设备都单独维护一个连接。
- (void) centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral
{
service = [[[LeTemperatureAlarmService alloc] initWithPeripheral:peripheral controller:peripheralDelegate] autorelease];
[service start];
}