Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Brother SDK查找IOS上的打印机?_Ios_Swift - Fatal编程技术网

如何从Brother SDK查找IOS上的打印机?

如何从Brother SDK查找IOS上的打印机?,ios,swift,Ios,Swift,我从iPad中找到打印机设置print可以找到我兄弟的打印机 但是当我尝试代码时,我得到了空的设备列表,我不知道为什么 我不熟悉斯威夫特。我只是尝试一下官方文档中的示例代码。 这是我的密码: func getPrinter() { let printerManager = BRPtouchNetworkManager() printerManager.setPrinterName("Brother QL-720NW") printerManager.startS

我从iPad中找到打印机设置print可以找到我兄弟的打印机

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

我不熟悉斯威夫特。我只是尝试一下官方文档中的示例代码。

这是我的密码:

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()
,这是我的打印日志:


SDK文档提供了两种方法的示例实现:

func startSearchWiFiPrinter() {}

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

但是,您不应该自己调用“didFinishSearch”方法。调用
startSearchWiFiPrinter
时,搜索开始,BRPtouchNetworkManager实例本身调用
didFinishSearch
方法。它能够这样做,因为您在以下行中设置了代理:
manager.delegate=self

您不应该需要两个类。您也不应该使用两个BRPtouchNetworkManager实例

试试这个。请记住,您在
startSearchWiFiPrinter
的参数中输入的数字表示搜索的时间(以秒为单位)

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)")
        }
      }
    }
  }

非常感谢你的帮助!我稍后会尝试代码并让您知道。谢谢,很抱歉,您解释得很清楚,我尝试代码并调用有趣的
startSearchWiFiPrinter
,但是
didFinishSearch
不会被触发。harrumph。我们一直在尝试使用Swift 5/Xcode12/IOS14来实现这一点,代码崩溃了。很难知道它在哪里崩溃,它在库/框架中的某个地方。
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)")
        }
      }
    }
  }