【发布时间】:2015-09-29 22:21:19
【问题描述】:
我正在使用 Swift 开发一个 iOS 应用程序来集成蓝牙打印机来打印信息。我用过CoreBluetooth框架但不知道哪个服务、特征我可以写value打印出来
//find CBService
func peripheral(peripheral: CBPeripheral!, didDiscoverServices error: NSError!) {
//println("CBPeripheralDelegate didDiscoverServices")
for service in peripheral.services {
println("Service: Discover service \(service)")
println("Service: UUID \(service.UUID) ")
peripheral.discoverCharacteristics(nil, forService: service as! CBService)
}
}
//find CBCharacteristics
func peripheral(peripheral: CBPeripheral!, didDiscoverCharacteristicsForService service: CBService!, error: NSError!) {
//if service.UUID == CBUUID(string: "18F0"){
for characteristic in service.characteristics {
let chara: CBCharacteristic? = characteristic as? CBCharacteristic
println("Char: service \(service.UUID) Discover char \(chara)")
println("Char: UUID \(chara!.UUID)")
peripheral.readValueForCharacteristic(chara)
/*
println("0")
switch chara!.UUID {
case CBUUID(string: "2AF1"):
println("1")
var rawArray:[UInt8] = [0x01];
let data = NSData(bytes: &rawArray, length: rawArray.count)
peripheral.writeValue(data, forCharacteristic: chara, type: CBCharacteristicWriteType.WithoutResponse)
default: println("")
}
*/
}
//}
}
系统显示结果如下:
服务:发现服务 服务:UUID 电池 服务:发现服务 服务:UUID 1803 服务:发现服务 服务:UUID 1802 服务:发现服务 服务:UUID 1811 服务:发现服务 服务:UUID 1804 服务:发现服务 服务:UUID 18F0 服务:发现服务 服务:UUID 设备信息 服务:发现服务 服务:UUID E7810A71-73AE-499D-8C15-FAA9AEF0C3F2
字符:发现字符 Char:UUID 电池电量 字符:发现字符 字符:UUID 2A06 字符:发现字符 字符:UUID 2A06 字符:发现字符 字符:UUID 2A47 字符:发现字符 字符:UUID 2A46 字符:发现字符 字符:UUID 2A48 字符:发现字符 字符:UUID 2A45 字符:发现字符 字符:UUID 2A44 字符:发现字符 字符:UUID 2A07 字符:发现字符 字符:UUID 2AF1 字符:发现字符 字符:UUID 2AF0 字符:发现字符 字符:UUID 系统 ID 字符:发现字符 字符:UUID 制造商名称字符串 字符:发现字符 字符:UUID BEF8D6C9-9C21-4C9E-B632-BD58C1009F9F
哪位蓝牙专家可以指导一下,谢谢
【问题讨论】:
-
您需要打印机供应商提供有关如何与其产品交互的信息。我的猜测是你写信给特征
BEF8D6C9-9C21-4C9E-B632-BD58C1009F9F,因为那是唯一的非标准 -
像 Paulw11。还请查看您的
CBCharacteristic中的properties,如果您只能阅读或写入、通知等,它应该会给您。 -
@Paulw11 我尝试修改为使用“BEF8D6C9-9C21-4C9E-B632-BD58C1009F9F”和 var rawArray:[UInt8] = [0x01]; let data = NSData(bytes: &rawArray, length: rawArray.count) peripheral.writeValue(data, forCharacteristic: chara, type: CBCharacteristicWriteType.WithoutResponse)
-
@Paulw11 但是,不工作,有没有可能我的 writeValue 使用错误或必须修改任何代码?
-
@KevinChang 您尝试过 Lite blue 应用程序吗?它将引导您了解特征并向您展示您可以编写的特征
标签: ios swift printing core-bluetooth