ios swift 3 - 打印机蓝牙

2024-01-18

我正在尝试创建一个通过蓝牙使用打印机进行打印的应用程序

在 xcode 上,我可以连接打印机,也可以查看服务和 uuid,但问题是,当我尝试查看服务的特征时,我发现 nil 有人知道这个问题吗?

  func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) {

    for service in peripheral.services! {

        print("Service \(service)\n")
        print("Discovering Characteristics for Service : \(service.uuid)")
        print(service.characteristics)

    }
}



override func viewDidLoad() {
    super.viewDidLoad()
    centralManager = CBCentralManager(delegate: self, queue: nil)
}

 func centralManagerDidUpdateState(_ central: CBCentralManager) {

 if #available(iOS 10.0, *){
 switch (central.state) {
 case CBManagerState.poweredOff:
 print("CBCentralManagerState.PoweredOff")
 case CBManagerState.unauthorized:
 print("CBCentralManagerState.Unauthorized")
 break
 case CBManagerState.unknown:
 print("CBCentralManagerState.Unknown")
 break
 case CBManagerState.poweredOn:
 print("CBCentralManagerState.PoweredOn")
 centralManager.scanForPeripherals(withServices: nil, options: nil)
 centralManager.scanForPeripherals(withServices: nil, options: nil)
 case CBManagerState.resetting:
 print("CBCentralManagerState.Resetting")
 case CBManagerState.unsupported:
 print("CBCentralManagerState.Unsupported")
 break
 }}else{
 switch central.state.rawValue{
 case 0:
 print("CBCentralManagerState.Unknown")
 break
 case 1:
 print("CBCentralManagerState.Resetting")
 case 2:
 print("CBCentralManagerState.Unsupported")
 break
 case 3:
 print("This app is not authorised to use Bluetooth low energy")
 break
 case 4:
 print("Bluetooth is currently powered off.")
 case 5:
 print("Bluetooth is currently powered on and available to use.")
 self.centralManager.scanForPeripherals(withServices: nil, options: nil)
 break
 default:
    break
 }}}

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
    print("name : \(peripheral.name )")


    let device = (advertisementData as NSDictionary)
        .object(forKey: CBAdvertisementDataLocalNameKey)
        as? NSString

    if device?.contains(BEAN_NAME) == true {
        self.centralManager.stopScan()

        self.peripheral = peripheral
        self.peripheral.delegate = self
        print("peripheral: \(self.peripheral)")
        centralManager.connect(peripheral, options: nil)
        print("peripheral: \(self.peripheral)")
    }
}

func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
    peripheral.delegate = self
    peripheral.discoverServices(nil)
}


 func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) {
print(error)
        for characteristic in service.characteristics! {
           print(anything)

}


func peripheral(_ peripheral: CBPeripheral, didWriteValueFor characteristic: CBCharacteristic, error: Error?) {
    print("Sent")
}

你错过了重要的一步didDiscoverServices- 你需要打电话discoverCharacteristics:for: -

func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) {

    for service in peripheral.services! {

        print("Service \(service)\n")
        print("Discovering Characteristics for Service : \(service.uuid)")
        print(service.characteristics)

    }
}

然后您将接到电话peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?)委托方法

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ios swift 3 - 打印机蓝牙 的相关文章

随机推荐

  • Chrome 64 更新 - 静音标签不再在

    https jsfiddle net kaldenfi rpmk93wm 3 https jsfiddle net kaldenfi rpmk93wm 3 div section section div
  • 将一个数字分成随机不相等的部分[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 所以我试图制作一个脚本 将值 4 随机拆分为 12 个不同的变量 我想不出一个好方法来正确地做到这一点 我考虑过随机化数字 使它们接近
  • 将整数数组传递给 URI 参数中的 WebAPI 方法?

    我有以下内容 HttpDelete public HttpResponseMessage DeleteFolder int ids 我正在尝试使用这个 DELETE http localhost 24144 api folder 1483
  • 如果不适合,如何将“...阅读更多”锚添加到文本末尾

    我正在寻找一种添加方法 read more 如果多行文本的高度超过 8em 则超链接到多行文本可见部分的末尾 我尝试了下面的代码但是 read more不会出现 并且只有最后一行高度的一半可见 如何让它出现并允许用户点击它 就像是 asd
  • 未定义无参数构造函数对象

    我知道这是一个重复的问题 但我找不到我的错误的答案 我试图显示数据库中保存的房间列表 但出现下一个错误 Server Error in Application No parameterless constructor defined for
  • Node.js http-proxy:错误响应未发送到客户端

    我正在使用 proxy web 转发客户端请求 当目标服务器启动时 我的代码将按预期工作 当目标服务器关闭时 ECONNREFUSED 错误将被捕获并打印到 console log 我想将该错误发送回客户端 并尝试使用此处提供的示例 不幸的
  • 通过 SharePoint 功能部署内容类型时 CPU 使用率较高

    我正在创建一个 SharePoint 功能 该功能将用于将某些内容类型 及其自定义列 字段 部署到新的 SharePoint 网站中 我使用了外部工具来生成内容类型的 CAML Andrew Connell 的自定义 STSADM 命令 h
  • 多个 dex 文件定义 Lcom/google/android/gms/internal/zzau

    我收到错误com android dex DexException Multiple dex files define Lcom google android gms internal zzau 当我运行我的应用程序时 gradle 文件是
  • 我的数组中出现双重结果(mysql_fetch_array)

    好的 我执行这个 table get personel table 1 function get personel table id global connection query SELECT query FROM employees q
  • @class 与 #import

    在 Objective C 中使用 class 或 import 有什么区别 我看过各种教程 只有少数使用 class 而大多数其他教程都使用 import class不导入文件 它只是对编译器说 即使你不知道这个类也存在 如果我使用它 请
  • 如何在单元测试中模拟环境文件导入

    在我们的角度应用程序中 我们使用环境文件来加载一些配置 环境 ts export const environment production false defaultLocale en US 然后我们在我们的一项服务中使用它 import
  • 处理 Spring Boot REST 应用程序的 404 错误时出错

    我尝试了 Spring boot 异常处理 我创建了一个 REST 应用程序 该应用程序适用于所有有效的 url 我正在尝试处理无效网址的异常 但如果我尝试使用无效的 url 访问应用程序 我会收到以下异常 13 04 02 940 htt
  • 了解 AudioBuffer 到 ArrayBuffer 的转换

    我有一个 AudioBuffer 客户端 我想将其 AJAX 到 Express 服务器 这个链接 https developer mozilla org en US docs Web API XMLHttpRequest Sending
  • 为什么 Visual Studio 不在发布输出中包含文件?

    奇怪的是 这个问题只影响一个文件 我们将其称为 test lic test lic 是一个 xml 文件 位于 asp net mvc 项目的根文件夹中 文件属性是 Build Action Content Copy To Output D
  • 如何使用 CSS 使换行比文本/元素更宽/更大

    你能告诉我如何强制 CSS 使line through属性比元素宽width 例如 h3 50 h3 and result looks like now how I can make the line wider than element
  • MiniTest 中的方法期望

    我正在尝试为 ActiveRecord 编写一个测试 Rails 使用 MiniTest 进行测试 所以我没有选择测试框架 我想测试的条件是这样的 来自 db create rake 任务 出于本示例的目的 被拉入方法中 def creat
  • 在 PyCharm 中,如何在导入的 Cython 扩展代码中断行

    我正在尝试检查该功能LinearNDInterpolator在以下Python代码中调用 from scipy interpolate interpnd import LinearNDInterpolator 我想运行一个调用函数的Pyth
  • 在 JavaScript 中强制执行 window.onload 事件

    好吧 我将重新表述我的请求 因为我认为根据一些答案 它变得很复杂 我所寻找的是是否有一个 javascript 命令可以从父级中的 javascript 触发 onload 事件 一行代码如 document getElementById
  • 函数与脚本 - Unix Bash 编程

    我对编程相当陌生 大约一年 使用 java 并且对 bash 非常陌生 大约六周 我编写了一个小型应用程序 它可以执行一些操作 并且它完全由脚本组成 没有一项功能 我知道我可以拥有一个包含所有功能的文件 但为什么和 或何时应该这样做 例如
  • ios swift 3 - 打印机蓝牙

    我正在尝试创建一个通过蓝牙使用打印机进行打印的应用程序 在 xcode 上 我可以连接打印机 也可以查看服务和 uuid 但问题是 当我尝试查看服务的特征时 我发现 nil 有人知道这个问题吗 func peripheral periphe