首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Brother的IOS上找到打印机?

如何从Brother的IOS上找到打印机?
EN

Stack Overflow用户
提问于 2019-07-29 08:37:16
回答 1查看 892关注 0票数 0

我发现打印机从iPad设置打印可以找到我的兄弟打印机。

但是当我尝试代码时,我得到了空的设备列表,我不知道为什么。

我不熟悉斯威夫特。我只是尝试一下官方文档中的示例代码。https://support.brother.com/g/s/es/htmldoc/mobilesdk/guide/discover-printer.html

这是我的代码:

代码语言:javascript
复制
func getPrinter() {

    let printerManager = BRPtouchNetworkManager()

     printerManager.setPrinterName("Brother QL-720NW")
     printerManager.startSearch(5)

    printerManager.getPrinterNetInfo()

    print("start")
    let testFind = YourClass()

    print("1")
    testFind.startSearchWiFiPrinter()
    testFind.didFinishSearch(printerManager)
    print("2")
  }

class YourClass: NSObject, BRPtouchNetworkDelegate {
    private var networkManager: BRPtouchNetworkManager?

    func startSearchWiFiPrinter() {
      print("3")
      let manager = BRPtouchNetworkManager()
      manager.delegate = self
      manager.startSearch(5)
      self.networkManager = manager
    }

    // BRPtouchNetworkDelegate
    func didFinishSearch(_ sender: Any!) {
      print("4")
      guard let manager = sender as? BRPtouchNetworkManager else {
        print("5")
        return
      }
      guard let devices = manager.getPrinterNetInfo() else {
        print("6")
        return
      }
      print(devices)
      print("7")
      for deviceInfo in devices {
        print("8")
        if let deviceInfo = deviceInfo as? BRPtouchDeviceInfo {
          print("Model: \(deviceInfo.strModelName), IP Address: \(deviceInfo.strIPAddress)")
        }
      }
    }
  }

我调用函数getPrinter(),这是我的打印日志:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-29 14:32:25

SDK文档给出了两个方法的示例实现:

代码语言:javascript
复制
func startSearchWiFiPrinter() {}

代码语言:javascript
复制
func didFinishSearch(_ sender: Any!) {}

在要执行搜索的类中,必须实现这些。您还需要声明类来参加协议BRPtouchNetworkDelegate。最后一件事是拥有一个能够容纳网络管理器的属性(在行:private var networkManager: BRPtouchNetworkManager?中完成)

但是,您不应该单独调用"didFinishSearch“方法。当您调用startSearchWiFiPrinter时,搜索就开始了,BRPtouchNetworkManager实例本身也调用了didFinishSearch方法。它能够这样做,因为您在行:manager.delegate = self中设置了委托。

你不应该需要两个类来完成这个任务。您也不应该使用两个BRPtouchNetworkManager实例。

尝尝这个。记住,作为startSearchWiFiPrinter参数的数字意味着搜索在几秒钟内会持续多久。

代码语言:javascript
复制
class EXAMPLEClass: NSObject, BRPtouchNetworkDelegate {
    private var networkManager: BRPtouchNetworkManager?
    func getPrinter() {
         self.startSearchWiFiPrinter()
    }

    func startSearchWiFiPrinter() {
      let manager = BRPtouchNetworkManager()
      manager.delegate = self
      manager.setPrinterName("Brother QL-720NW")
      manager.startSearch(5)
      self.networkManager = manager
    }

    // BRPtouchNetworkDelegate
    func didFinishSearch(_ sender: Any!) {
      print("4")
      guard let manager = sender as? BRPtouchNetworkManager else {
        print("5")
        return
      }
      guard let devices = manager.getPrinterNetInfo() else {
        print("6")
        return
      }
      print(devices)
      print("7")
      for deviceInfo in devices {
        print("8")
        if let deviceInfo = deviceInfo as? BRPtouchDeviceInfo {
          print("Model: \(deviceInfo.strModelName), IP Address: \(deviceInfo.strIPAddress)")
        }
      }
    }
  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57250005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档